在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)
}
无论何时执行上面的代码,浏览器中的所有定时全部同时停止执行。