此贴是“程序暂停一段时间问题”延续,问题没有解决,希望大家不要介意!
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);
      }
    }

解决方案 »

  1.   

    setTimeout("函数名或者js代码", 1000);//1000为一秒
      

  2.   

    setTimeout
    http://www.w3schools.com/js/js_timing.asp
      

  3.   

    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");
                 } 
    setTimeout("document.getElementById(tiff).Print(4);", 3000);       
          }
        }如果代码多的话可以将代码放到一个函数中然后用setTimeout("函数名()", 1000);//n千 = n秒
      

  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秒再执行下句)
                var locked = true;
                setTimeout(function () {
                     if (locked) {
                        locked = false;
                        document.getElementById(tiff).Print(4);
                     }
                }, 1000 * 10);
          }
        }
      

  5.   

    没能执行document.getElementById(tiff).Print(4);
      

  6.   

    document.getElementById(tiff).Print(4);//有Print()这么用的么?
      

  7.   

    你的tiff对应的对象是哪个标签啊,如果是想输出就.innerHTML = "4";或者.value = "4";赋值就行了
      

  8.   

    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秒再执行下句)
          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秒执行
      

  9.   

    那楼主先将那块幻城setTimeout("alert(typeof document.getElementById(tiff));", 1000);看看输出的是不是对象
      

  10.   

    还有在没能执行document.getElementById(tiff).Print(4);的时候看看左下角处报的什么错误
      

  11.   

    报 错误 ‘tiff’未定义
      

  12.   

    没有tiff对应的id的对象那就是,如果按楼主原来的代码不睡眠的话可以运行处效果么?
      

  13.   

    Sleep(this,10000);  
    this指的就是Test这个方法,这个方法的确是延迟了10秒才执行的啊,alert("continue");  就是10秒后才弹出来的,楼主到底想要什么?
    你想让Sleep(this,10000);  这个方法延迟10秒?那就是双重延迟了,10秒后执行Sleep方法?Sleep方法制定执行的Test方法又延迟10秒,那就是20秒了!
    楼主到底想要什么?
      

  14.   

    先说说我9楼代码效果,打开页面弹出了“sleep”,不按确定,此时的for的循环中tiff="tiff1"
    按确定后快速执行一次循环,此时又弹出 “sleep”,依次类推
    我想要的效果是不弹出任何对话框,但执行到tiff="tiff1"后,10秒后执行第二次循环,tiff="tiff2"
    不知道我这么表示,大家明白没有
      

  15.   

    这种情况不要用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>
      

  16.   

    js的for循环语句没有sleep的~~它是解释型语句~不支持多线程
      

  17.   

    谢谢各位的解答,jol_boy我
          var tiff;
          tiff="",num="<%=printnum%>";
          for(var i=1;i<=num;i++)中num是asp中printnum的变量值,由于我对js了解甚少,能否具体的帮我改写一下,非常感谢!
      

  18.   


    <!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>
      

  19.   

    非常感谢,效果有了,执行判断有时间间隔了
    但网页执行有错误,如下提示
    错误 ‘document.getElementById(...)’为空或不是对象
      

  20.   

    执行上面的代码还有个问题,
    第1次执行PrintImage()方法,tiff变量值为tiff1
    第2次执行PrintImage()方法,tiff变量值为tiff2
    第3次执行PrintImage()方法,tiff变量值为tiff3
    第4次执行PrintImage()方法,tiff变量值为tiff4
    第5次执行PrintImage()方法,tiff变量值为tiff5
    第一次执行时,没有经过if判断
      

  21.   

    改为document.getElementById(tiff).Print(4),但按理会执行4次,现在只执行两次
    而且最后左下角还是会有提示
    错误 ‘document.getElementById(...)’为空或不是对象
      

  22.   

    我想可能是原来是定义成printimage函数调用
    要重新整合下,我先去试试先
      

  23.   

    非常感谢各位解答,特别是jol_boy
    问题已解决!
      

  24.   

    document.getElementById(tiff)在调用这个的时候,先判断一下是不是null
    if(document.getElementById(tiff)!=null){//这里放你要执行的语句}出现这种情况,是找不到页面元素。
      

  25.   

    setTimeout("函数名或者js代码", 1000);//1000为一秒