我怎么能为所有setInterval()清除()?

37 javascript setinterval

我有一个在jQuery插件中调用的setInterval(),但我想从我的主页面清除它,在那里我无法访问存储setInterval的变量.

有没有办法清除页面上的所有计时器?

Vin*_*nay 51

这可以是清除所有间隔的逻辑之一......

for (var i = 1; i < 99999; i++)
        window.clearInterval(i);
Run Code Online (Sandbox Code Playgroud)

  • http://stackoverflow.com/a/8060574/393087 - 它不必是那么长的循环 (3认同)
  • 您可能不希望在生产代码中使用它,但我经常在进行故障排除时以交互方式使用它. (2认同)
  • 你解决了我一个非常大的问题谢谢你 (2认同)

Isa*_*ler 23

您可以覆盖setInterval:

window.oldSetInterval = window.setInterval;
window.setInterval = function(func, interval) {
    var interval = oldSetInterval(func, interval);
    // store it in a array for stopping? stop it now? the power is yours.
}
Run Code Online (Sandbox Code Playgroud)

  • 为什么`new function`而不是`function`? (8认同)
  • 我喜欢这个方法。下一个明显的函数是 onUnloadStopTimers。认为它被盗了。:) (2认同)
  • @ThiefMaster,因为他是Java家伙. (2认同)

Sas*_*gov 8

不,你不能,不能没有原始变量.


小智 6

答案

for (var i = 1; i < 99999; i++)
     window.clearInterval(i);
Run Code Online (Sandbox Code Playgroud)

是我要找的那个。通过对这个非常简单的逻辑稍加改进,我能够做这样的事情。

var i = 0;
var rotatorId;
var rotator;

rotator =  setInterval(function() {myfunction(), 3000});
rotatorId[i] = rotator;
i++;

if (rotator > 1) {
   for(i = 1; i < rotatorId.length; i++){
      clearInterval(rotatorId[i]);                      
    }                       
}
Run Code Online (Sandbox Code Playgroud)