关于setInterval返回值问题

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;
    }

猜你喜欢

转载自www.cnblogs.com/ziyoublog/p/10021404.html