此贴是“程序暂停一段时间问题”延续,问题没有解决,希望大家不要介意!
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);
}
}
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);
}
}
解决方案 »
- 请教关于窗口置顶的问题
- 这样的正则要怎么写
- 如何使用JavaScript调用系统的软键盘
- 如何用JS把XML文件里的数据读取到HTML上?
- fckeditor 求解: 自定了一个plugins插件(信息模板),选择相应的模板,然后将其内容,返回到主窗体的fckeditor 中,问题:如何将“模板”内容返回到主窗体fckeditor中
- 自己做的一个简单的AJAX树,附上源代码.另求哪位高手帮这颗树改成线条的(就像CSDN那样)
- 重复输入的一个问题.求救!!
- 如何在运行时屏蔽<a>?
- 怎样使页面不能返回前一页,例如提交订单后不能后后退到前一页?
- 在java中怎样钓用另一个asp程序?
- flash播放器的样式
- 求教JS高手:document.form1和document.getElementsByName区别
http://www.w3schools.com/js/js_timing.asp
{
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");
}
setTimeout("document.getElementById(tiff).Print(4);", 3000);
}
}如果代码多的话可以将代码放到一个函数中然后用setTimeout("函数名()", 1000);//n千 = n秒
{
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秒再执行下句)
var locked = true;
setTimeout(function () {
if (locked) {
locked = false;
document.getElementById(tiff).Print(4);
}
}, 1000 * 10);
}
}
{
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秒再执行下句)
function Sleep(obj,iMinSecond)
{
if (window.eventList==null)
window.eventList=new Array();
var ind=-1;
for (var i=0;i<window.eventList.length;i++)
{
if (window.eventList[i]==null)
{
window.eventList[i]=obj;
ind=i;
break;
}
}
if (ind==-1)
{
ind=window.eventList.length;
window.eventList[ind]=obj;
}
setTimeout("GoOn(" + ind + ")",iMinSecond);
}
function GoOn(ind)
{
var obj=window.eventList[ind];
window.eventList[ind]=null;
if (obj.NextStep) obj.NextStep();
else obj();
}
function Test()
{
alert("sleep");
Sleep(this,10000);
this.NextStep=function()
{
alert("continue");
}
}
Test();
document.getElementById(tiff).Print(4);
}
}
上面代码基本上满足要求,但是问题在于我需要按 确定“sleep”,但按确定后并没有延迟10秒执行
this指的就是Test这个方法,这个方法的确是延迟了10秒才执行的啊,alert("continue"); 就是10秒后才弹出来的,楼主到底想要什么?
你想让Sleep(this,10000); 这个方法延迟10秒?那就是双重延迟了,10秒后执行Sleep方法?Sleep方法制定执行的Test方法又延迟10秒,那就是20秒了!
楼主到底想要什么?
按确定后快速执行一次循环,此时又弹出 “sleep”,依次类推
我想要的效果是不弹出任何对话框,但执行到tiff="tiff1"后,10秒后执行第二次循环,tiff="tiff2"
不知道我这么表示,大家明白没有
<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>
var tiff;
tiff="",num="<%=printnum%>";
for(var i=1;i<=num;i++)中num是asp中printnum的变量值,由于我对js了解甚少,能否具体的帮我改写一下,非常感谢!
<!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>
但网页执行有错误,如下提示
错误 ‘document.getElementById(...)’为空或不是对象
第1次执行PrintImage()方法,tiff变量值为tiff1
第2次执行PrintImage()方法,tiff变量值为tiff2
第3次执行PrintImage()方法,tiff变量值为tiff3
第4次执行PrintImage()方法,tiff变量值为tiff4
第5次执行PrintImage()方法,tiff变量值为tiff5
第一次执行时,没有经过if判断
而且最后左下角还是会有提示
错误 ‘document.getElementById(...)’为空或不是对象
要重新整合下,我先去试试先
问题已解决!
if(document.getElementById(tiff)!=null){//这里放你要执行的语句}出现这种情况,是找不到页面元素。