js,定时器无法清除
今天写一个定时器的练习,结果发现清除定时器的语句起不了作用,代码如下
<script type="text/javascript">
i=11;
var s=document.getElementById("s1");//获取span标签
function daojishi(){
i--;
s.innerHTML=("倒计时:"+i+"秒")
var t=setInterval(daojishi,1000);
if(i==-1){
clearInterval(t)
}
}
daojishi();
</script>
然后仔细看了一下,定时器写在了方法中,每次它都会隔1秒调用自身所在方法,当i=1时符合条件确实清除了这个定时器,但是1秒后这个函数还会被执行,又会创建一个新的计时器。
修改后:
i=11;
var s=document.getElementById("s1");//获取span标签
function daojishi(){
i--;
s.innerHTML=("倒计时:"+i+"秒")
if(i==-1){
clearInterval(t)
s.innerHTML=("爆炸")
}
}
var t=setInterval(daojishi,1000);
将计时器写在函数外面就可以了,这样一秒后函数执行,但却并不会创建新的计时器。