一定要注意,这两个的输入参数是设置timeout 和interval时候的返回值。
HTML DOM clearInterval()方法
clearInterval() 方法的参数必须是由 setInterval() 返回的 ID 值。
语法
clearInterval(id_of_setinterval)
参数 描述
id_of_setinterval 由 setInterval() 返回的 ID 值。
HTML DOM clearTimeout() 方法
定义和用法clearTimeout() 方法可取消由 setTimeout() 方法设置的 timeout。语法clearTimeout(id_of_settimeout)
id_of_settimeout由 setTimeout() 返回的 ID 值。该值标识要取消的延迟执行代码块。
code example;
function fn(){}
var a=setTimeout(fn,10);//设置定时返回句柄
var b=setInterval(fn,10);//设置定时返回句柄
clearTimeout(a);//清除时输入句柄
clearInterval(b);//清除时输入句柄
原理:
setTimeout 和setInterval从字面上应该是可以知道其大意的。timeout:延时;interval:间隔;
setTimeout可以实现循环执行,方法也很简单,就是用一个递归就可以了。
他们两个都是向js内部设置一个定时对象。所以清除的时候要指定对象清除。
清除全部定时器的方式:
1.定义全局变量,通过js遍历清除
这种方法在项目中所使用到的定时器必须赋值记录到定义好的全局变量中,实现模拟代码如下:
var pageTimer = {} ; //定义计算器全局变量 //赋值模拟 pageTimer["timer1"] = setInterval(function(){},2000); pageTimer["timer2"] = setInterval(function(){},2000); //全部清除方法 for(var each in pageTimer){ clearInterval(pageTimer[each]); }
2.暴力清除方式
设置一个比较大的数值,循环清除,模拟代码如下:
for(var i = 1; i < 1000; i++) { clearInterval(i); }
分析:实际上暴力清除的方式是不可取的,在不得已情况下才使用,在IE下,定时器返回值在IE下面是8位数字如:248147094,并且起始值不能确定,而Chrome和firefox下是从1开始的个位数字,一般项目还是建议第一种,并且第一种的扩展性也好,比如可以做个方法,清除除了指定定时器之外的所有定时器。
参考文献地址:http://www.xuephp.com/main/detail.php?type=php&cid=33769