oBtn1.onclick = function(){ clearInterval(timer); timer = setInterval(cwidth,10); alert(timer); } oBtn2.onclick = function(){ clearInterval(timer); }
setInterval返回值相当于一个Id,每次执行都会产生一个特定的Id,返回值为数字,从一开始逐次累加。
但是在火狐浏览器第一次执行时返回值为2.
错误方法:
function mySetInterval(f, param, time) { var interval = param._tag; clearInterval(interval); interval = setInterval(function () { f(param); }, time); }
interval 返回值给一个私有变量,私有变量在这个方法结束就没了,所以 interval 这个定时器取消不掉。
正确方法:
function mySetInterval(f, param, time) { clearInterval(param._interval); var interval = setInterval(function () { f(param); }, time); param._interval = interval; }