如何清除匿名定时器

时间:2022-12-12 23:23:26

在JS中,并没有查看所有定时器的接口,所以无法知道程序中使用了多少个定时器,更无法知道定时器对应的执行函数,在这种情况下,我们一来难以清除匿名定时器,二来难以一次清除所有的定时器。

幸好,现在主流的浏览器(包括最新的Chrome、Firefox以及ID)都默认给定时器分配了一个较小的ID,数字一般小于9999。利用这个特性,我们可以很轻易地清除掉所有的定时器,包括匿名定时器与命名定时器。

示例如下:

// 首先定义两个定时器
 var h1 = document.querySelector("h1"),
     h2 = document.querySelector("h2"),
     i = 0;
// 定时器1 
 setInterval(function() {
    h1.innerHTML = i ++;
 }, 1000)
// 定时器2
 var h2Timer = setInterval(function() {
    h2.innerHTML = i;
 }, 1000)

所涉及到HTML如下:

<h1>0</h1>
<h2>0</h2>

充分利用定时器的匿名ID特性,一次性清除所有的定时器,代码如下:

for(var i = 0; i < 9999; i++) {
    clearInterval(i)
}

无论何时执行上面的代码,浏览器中的所有定时全部同时停止执行。