如何延迟10秒再执行下句

slysmart 2010-09-25 01:24:26
此贴是“程序暂停一段时间问题”延续,问题没有解决,希望大家不要介意!
function PrintImage()
{
var tiff;
tiff="",num="<%=printnum%>";
for(var i=1;i<=num;i++)
{
tiff= "tiff" + i;
if (document.getElementById(tiff).GetValue(9)==2480)
{
var WshShell = new ActiveXObject("WScript.Shell");
WshShell.Run("cmd /k c://2.bat");
}
else if (document.getElementById(tiff).GetValue(9)==4961)
{
var WshShell = new ActiveXObject("WScript.Shell");
WshShell.Run("cmd /k c://3.bat");
}
(//如何延迟10秒再执行下句)
document.getElementById(tiff).Print(4);
}
}
...全文
671 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
山城忙碌人 2010-09-25
  • 打赏
  • 举报
回复
setTimeout("函数名或者js代码", 1000);//1000为一秒
杨友山 2010-09-25
  • 打赏
  • 举报
回复
学习中
冰岛男孩 2010-09-25
  • 打赏
  • 举报
回复
学习了。。。
温溪 2010-09-25
  • 打赏
  • 举报
回复
学习了。。。
shao_jingna 2010-09-25
  • 打赏
  • 举报
回复
学习一下
jol_boy 2010-09-25
  • 打赏
  • 举报
回复
解决了就好,结贴~~~嘿嘿~
jol_boy 2010-09-25
  • 打赏
  • 举报
回复
document.getElementById(tiff)在调用这个的时候,先判断一下是不是null
if(document.getElementById(tiff)!=null){//这里放你要执行的语句}

出现这种情况,是找不到页面元素。
slysmart 2010-09-25
  • 打赏
  • 举报
回复
非常感谢各位解答,特别是jol_boy
问题已解决!
slysmart 2010-09-25
  • 打赏
  • 举报
回复
我想可能是原来是定义成printimage函数调用
要重新整合下,我先去试试先
slysmart 2010-09-25
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 slysmart 的回复:]

非常感谢,效果有了,执行判断有时间间隔了
但网页执行有错误,如下提示
错误 ‘document.getElementById(...)’为空或不是对象
[/Quote]
改为document.getElementById(tiff).Print(4),但按理会执行4次,现在只执行两次
而且最后左下角还是会有提示
错误 ‘document.getElementById(...)’为空或不是对象
porschev 2010-09-25
  • 打赏
  • 举报
回复
看看。。不会。。
slysmart 2010-09-25
  • 打赏
  • 举报
回复
执行上面的代码还有个问题,
第1次执行PrintImage()方法,tiff变量值为tiff1
第2次执行PrintImage()方法,tiff变量值为tiff2
第3次执行PrintImage()方法,tiff变量值为tiff3
第4次执行PrintImage()方法,tiff变量值为tiff4
第5次执行PrintImage()方法,tiff变量值为tiff5
第一次执行时,没有经过if判断
slysmart 2010-09-25
  • 打赏
  • 举报
回复
非常感谢,效果有了,执行判断有时间间隔了
但网页执行有错误,如下提示
错误 ‘document.getElementById(...)’为空或不是对象
jol_boy 2010-09-25
  • 打赏
  • 举报
回复

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>

<BODY>
<div id="content">测试用的div:<br/></div>
<SCRIPT LANGUAGE="JavaScript">
<!--

var tiff="";
var num=10;//"<%=printnum%>";假设这里是10,具体的值由你的asp页面决定!
var i=1;
function PrintImage()
{
//for(var i=1;i<=num;i++)
//{
//这里开始时你这个方法的主体,那么上面的for循环就不需要了!
tiff= "tiff" + i;
if (document.getElementById(tiff).GetValue(9)==2480)
{
var WshShell = new ActiveXObject("WScript.Shell");
WshShell.Run("cmd /k c://2.bat");

}
else if (document.getElementById(tiff).GetValue(9)==4961)
{
var WshShell = new ActiveXObject("WScript.Shell");
WshShell.Run("cmd /k c://3.bat");
}

//这里是测试用的代码
document.getElementById("content").innerHTML+="第"+i+"次执行PrintImage()方法,tiff变量值为"+tiff+"<br/>";

//i的递增,看你具体情况,要不要放到上面的两个if中去,因为放里面和放外面,是不一样的。
//放里面,i递增以if条件为准才会递增,放外面,是不管如何都会递增
i++;

if(i<=num)
setTimeout(PrintImage,1000);
//}
}
PrintImage();

//-->
</SCRIPT>
</BODY>
</HTML>

slysmart 2010-09-25
  • 打赏
  • 举报
回复
谢谢各位的解答,jol_boy我
var tiff;
tiff="",num="<%=printnum%>";
for(var i=1;i<=num;i++)中num是asp中printnum的变量值,由于我对js了解甚少,能否具体的帮我改写一下,非常感谢!
jol_boy 2010-09-25
  • 打赏
  • 举报
回复
js的for循环语句没有sleep的~~它是解释型语句~不支持多线程
jol_boy 2010-09-25
  • 打赏
  • 举报
回复
这种情况不要用for循环了,你的for循环目的就是改变tiff,从1到N,那这种情况只要把for循环中要执行的内容封装成一个方法,利用setTimeout方法延迟执行,每执行一次这个方法,就把i累加。参考代码如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>

<BODY>

<div id="content"></div>
<SCRIPT LANGUAGE="JavaScript">
<!--

var i=1;
var tiff;
function PrintImage()
{
tiff="tiff"+i;
//这里放置你要执行的语句
document.getElementById("content").innerHTML+="第"+i+"次执行PrintImage()方法,tiff变量值为"+tiff+"<br/>";

i++;
if(i<=10)
setTimeout(PrintImage,1000);
}
PrintImage();

//-->
</SCRIPT>
</BODY>
</HTML>


slysmart 2010-09-25
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 jol_boy 的回复:]

Sleep(this,10000);
this指的就是Test这个方法,这个方法的确是延迟了10秒才执行的啊,alert("continue"); 就是10秒后才弹出来的,楼主到底想要什么?
你想让Sleep(this,10000); 这个方法延迟10秒?那就是双重延迟了,10秒后执行Sleep方法?Sleep方法制定执行的Test方法又延迟10秒,那就是20秒了!
楼主到底想要什……
[/Quote]
先说说我9楼代码效果,打开页面弹出了“sleep”,不按确定,此时的for的循环中tiff="tiff1"
按确定后快速执行一次循环,此时又弹出 “sleep”,依次类推
我想要的效果是不弹出任何对话框,但执行到tiff="tiff1"后,10秒后执行第二次循环,tiff="tiff2"
不知道我这么表示,大家明白没有
slysmart 2010-09-25
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 kyzy_yy_pm 的回复:]

没有tiff对应的id的对象那就是,如果按楼主原来的代码不睡眠的话可以运行处效果么?
[/Quote]
可以运行的
jol_boy 2010-09-25
  • 打赏
  • 举报
回复
Sleep(this,10000);
this指的就是Test这个方法,这个方法的确是延迟了10秒才执行的啊,alert("continue"); 就是10秒后才弹出来的,楼主到底想要什么?
你想让Sleep(this,10000); 这个方法延迟10秒?那就是双重延迟了,10秒后执行Sleep方法?Sleep方法制定执行的Test方法又延迟10秒,那就是20秒了!
楼主到底想要什么?
加载更多回复(14)

87,902

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧