我的上一篇提问 大家都说的很好  但是还是有些疑问 比如我想用循环+setInterval实现渐变
上一篇的一位仁兄 用循环和setTimeout,还有setInterval自己也可以实现
但是小弟想用循环+setInterval实现渐变
没有为什么  只是想更了解下setInterval
下面的代码 在逻辑上还是行得通的 但是结果却不行 大家看看
var a=document.getElementById("myElement");
var b=0;
var aa;
(function(){for (i = 0; i < 200; i++) 
             clearInterval(aa)
 b=b+30;
             aa=setInterval(function(){a.style.height=b+'px';},10*i)
    })()

解决方案 »

  1.   

    还有 小弟发现ie和ff对setInterval的支持是有区别的
    比如下面
    setInterval(function(){
    alert('aaa' )
    },1000)ie在点击玩确定后,在计算1秒 然后弹出
    ff是你不点击确定 它也在计算一秒 所以 你停一会再点 它在那已经堆成一堆了 
    大家可以运行下
      

  2.   

    你首先得了解setInterval和setTimeout又什么差别.
    两个是不同的概念啊...你用setInterval放在循环里等于你的方法在集合级增长调用次数...
      

  3.   

    几何级数增长才对...IE是因为弹出的对话框都是同一个HWND...
      

  4.   

    可以调用一次setInterval我就清除一次  不就和setTimeout一样了吗?
    上面的代码里面有清除 clearInterval(aa)
      

  5.   

    setInterval如果只让它运行了一次就clear了那么就没有任何必要。
    而且你最好逻辑上先set再clear,javascript语法的严格性远不及java和C#,所以有时候得用逻辑上的严格性来保证程序有效。
      

  6.   

    忘贴完整代码了
    <div id=myElement style="height:100px;width:100px;background-color:red"></div>
    <script defer=defer>   
    setInterval(function(){
    alert('aaa' )
    },1000)
    </script>  
      

  7.   

    就算你这样清理也是不一样的.
    setInterval是无论运行结果如何都会继续做.
    而setTimeout则是运行会因结果而停止的.
    例如你在途中alert了什么东西.
    在setInterval中就算上一个方法还在执行,他也会继续执行下一个.
    在setTimeout中则不同.他不会执行下一个.甚至连计时也没开始.