如何在第二次点击的时候清除上一次的setInterval?

用setInterval方法写了一个循环计时器,使毫秒数每过一秒加1。可当我第二次点击按钮执行该函数的时候,上一次的计时还存在,导致毫秒的速度越来越快。如何在第二次点击的时候清除上一次的计时器?

阅读 6.4k
5 个回答
     var timer = null;
        var i =0;
        var btn = document.getElementById('btn');
        btn.onclick = function(){
            if(timer){
                clearInterval(timer);
            }
                timer = setInterval(function(){
                    i++
                    console.log(i);
                },1000);
            
        }

给个IF条件 判断是否存在这个定时器 存在的话就清除就是了

var cnt, handle 

$('#btn').click(function () {
  cnt = 0
  if (handle !== undefined) {
    clearInterval(handle)
  }
  handle = setInterval(function() {
    console.log(cnt++)
  }, 1000)
})

clearInterval 是重点

var interval, i = 0
​
function fn() {
   console.log(i ++ )
}
​
function clickBtn() {
   interval && clearInterval(interval)
   interval = setInterval(fn, 1000)
}

setInterval容易造成页面性能问题,cpu占内存,我之前设置了2个计时器,一加载页面一会就卡死。建议用settimeout,重复调用一次

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题