setInterval据说相当于在后台加了个timer 然后每隔一段时间执行里面的function 而且不影响程序流程可是如果setInterval下面有语句的话 它就不执行了 非要等下面的所有语句都执行完了才执行  为什么???下面是证明   大家可以看看打印出来的时间<html><head><title></title>
<script language="javascript" type="text/javascript">
window.onload=function()
{   var div=document.getElementById("num");
    div.appendChild(document.createTextNode("At start: "+(new Date()).getTime()+" "));
    
    setInterval(append,2000);
    function append()
    {   var div=document.getElementById("text");
        div.appendChild(document.createTextNode("during setInterval "));
        div.appendChild(document.createTextNode((new Date()).getTime()+" "));
    }
    
    div.appendChild(document.createTextNode("After setInterval: "+(new Date()).getTime()+" "));
    
    var curTime=(new Date()).getTime();
    while(curTime+5000 > (new Date()).getTime());
    
    div.appendChild(document.createTextNode("After pending 5000millisecs: "+(new Date()).getTime()));
}
</script>
</head><body>
<div id="text"></div>
<div id="num"></div>
</body></html>
高手讲讲 setInterval 怎么用? 对整个程序流程的影响?如果我想每隔2s调用function1 等funtion1满足某种条件后 再每隔4s调用function2  怎么写?
(好像不能  setInterval(function1,2);setInterval(function2,4) )

解决方案 »

  1.   

    setInterval 有两个参数 第一个是循环执行的Function,第二个是循环执行的毫秒数你的append写到了setInterval后面写的是,也就是这时候append==undefinedsetInterval(append,2000);等于是 setInterval(undefined,2000);会出现错误。
      

  2.   

    setInterval 还有个对应方法是 clearInterval 用于清除这个timer setInterval 会返回 一个id 调用 clearInterval(id) 就会清楚这个timer 示例 循环10次之后改成 4 s只执行一次
    var i = 0;
    var t_id = 0;
    var f = function(){
      //如果i ==10 清除上面的setInterval计时器
      if(i==10){
        clearInterval(t_id);  //建立新的计时器4s循环一次
        t_id = setInterval(f,4000);
      }
      i++;
    }t_id = setInterval(f,2000);
      

  3.   

    此外setInterval还有个兄弟 方法是setTimeout 过指定时间执行一次方法
    (与setInterval的区别是setInterval是循环执行,setTimeout 只执行一次。)具体使用就不说了,建议你自己google,加深下记忆。
      

  4.   

    楼上说的都很对
    但xtml是逐条读取代码的,它有先后顺序的,如果你把setInterval放在前面它会先执行的
      

  5.   

    这个简单:var t=setInterval("f1()",2000);function f1()
    {
      if(条件满足)
      {
        clearInterval(t);
        t=setInterval("f2()",4000);
      }
      else
        //做自己该做的事}function f2()
    {
       //做自己该做的事
    }
      

  6.   


    这个没有问题  而且编译结果正确    append可以写到后面啊~~  它是个function嘛
      

  7.   

    #2  #6  方法很好  学习了   嵌套式的调用setInterval
      

  8.   

    很多人都會有這些毛病
    setInterval(append,2000);
        function append()
        {   var div=document.getElementById("text");
            div.appendChild(document.createTextNode("during setInterval "));
            div.appendChild(document.createTextNode((new Date()).getTime()+" "));
        }
        
    或者是
    iframe.src=...
    iframe.onload=function(){..}其實這些習慣都不好而且, 不一定要先定好名字
    可以直接setInterval(function ()
        {   var div=document.getElementById("text");
            div.appendChild(document.createTextNode("during setInterval "));
            div.appendChild(document.createTextNode((new Date()).getTime()+" "));
        },2000);