最近写的一个项目用到了定时器,在测试过程中发现了一个问题:在很偶然的情况下倒计时会显示负数的秒数(大概测几十次才会出现一次…)于是考虑到了定时器的阻塞问题,大概作出了如下的修改:
$(".start").click(function(){
time = window.setInterval("run();", 1000);
});
var stop = false;/*标记定时器是否暂停*/
var lt = document.getElementById("left_time");/*显示倒计时的地方*/
function run(){
if(stop){
if(time){ /*若定时器已标记暂停但依然存在*/
window.clearInterval(time);
}
return;
}
if(lt.innerHtml <= 0){
stop = true;
window.clearInterval(time);
}
}