javascript如何延迟执行一个函数?
我要在for循环里延迟1秒执行一个函数,用了settimeout,它只能初次延迟,以后的循环就延迟了,setInterval也不行,请问哪位高手帮忙解决
比如:
function a()
{
    for(var i=0;i<10;i++)
    {
          //我要在这里延迟1秒执行函数b()10次,也就是10秒执行完这个for循环
    }
}
function b()
{
    alert("b");
}

解决方案 »

  1.   

    用了serInterval还是不要用for循环吧?
    var time = setInterval('b()',1000);//这样1秒执行一次b
    var count = 0;
    function b() {
      alert('b');
       count++;
       if(count == 9) {
       clearInterval(time);
       }
    }
      

  2.   


    ~function(){
      var i=1;
      function b(){
        alert("b");
        if(i<10){
          setTimeout(b,1000);
          i++;
        } 
      }
      setTimeout(b,1000);
    }();
      

  3.   

    function a() 

        for(var i=0;i <10;i++) 
        { 
              setTimeout("b()", 1000 * (i + 1))    
        } 
    }
      

  4.   


    var tid;
    var n = 0
    function a() 
    {
       n++;
       if(tid!=null){clearTimeout(tid);tid=null;}
       if(n<=10) tid = setTimeout("b()",1000);

    function b() 

        alert("b"); 
    }
      

  5.   

    我上面错了,改下
    var tid;
    var n = 0
    function a() 
    {
       tid = setTimeout("b()",1000);

    function b() 

       alert("b"); 
       n++;
       if(tid!=null){clearTimeout(tid);tid=null;}
       if(n<10) tid = setTimeout("b()",1000);
    }
      

  6.   

    <script>
    function a() 

        for(var i=0;i <10;i++) 
        { 
              pause(1000);
              b();
        } 

    function b() 

        alert("b"); 
    }function   pause(numberMillis)   {   
                      var   now   =   new   Date();   
                      var   exitTime   =   now.getTime()   +   numberMillis;   
                      while   (true)   {   
                              now   =   new   Date();   
                              if   (now.getTime()   >   exitTime)   
                                      return;   
                      }   
              }   </script>
    <button onclick="a()">aa</button>
      

  7.   

    var ctroltime;
    function MyLoad()
    {
         ctroltime=setTimeout("hh()",3000);  //每隔3s执行hh()
    }hh(){
    ……
    }
      

  8.   

    alert 会影响脚本执行,还是用 div 显示吧L@_@K
    <div id="divOutput"></div>
    <script type="text/javascript">
    <!--
    function a()
    {
        for(var i=1; i<=10; i++)
    window.setTimeout("b("+i+")", 1000*i);
    }function b(num)
    {
    var t = new Date();
        document.getElementById("divOutput").innerHTML += ("b"+num+" : "+t.toLocaleTimeString()+"<br />");
    }a();
        //-->
        </script>
      

  9.   

    我想问下三楼的,为什么这样不行,我怎样加参数呢?
    function aa() 

        for(var i=0;i <5;i++) 
        { 
              var k = "bbbb";
      setTimeout("bb(k)", 2000 * (i + 1))
      
        } 

    function bb(j)
    {
    alert(j);
    }
      

  10.   

    setTimeout("bb(" + k +")", 2000 * (i + 1)) 
      

  11.   

    <script>
    function aa() 

        for(var i=0;i <5;i++) 
        { 
              var k = "bbbb"; 
       setTimeout("bb(" + k +")", 2000 * (i + 1));
      
        } 

    function bb(j) 

    alert(j); 
    }
    </script>
    我这样还是不行呀,它提示我“bbbb”未定义
      

  12.   


    <script>
    var tid;
    var n = 0; 
    function aa() 

       var k = "bbbb"; 
       tid = setTimeout("bb('" + k +"')", 2000); 

    function bb(j) 

      alert(j);
      if(tid!=null){clearTimeout(tid); tid=null;}
      n++
      if(n<5) tid = setTimeout("bb('" + j +"')", 2000);

    aa()
    </script>