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

将计时器写在函数外面就可以了,这样一秒后函数执行,但却并不会创建新的计时器。

 

posted on 2017-09-27 14:33  杨二凡  阅读(2444)  评论(0编辑  收藏  举报

导航