javascript – 为什么我不能在以下示例中使用clearInterval?

我有以下问题.当timer_mou开始计数时,当暂停等于closeit时,它不会清除间隔.

我在这里错过了什么?

function my_timer(pause){
    console.log('function: '+pause);

    var timer_mou = setInterval(function() { 
        console.log('counting');
    }, 5000);  

    if (pause == 'closeit') { 
        clearInterval(timer_mou); 
    }     
}

解决方法:

只需将setInterval置于暂停函数之外,即可在全局范围内定义变量timer_mou,然后当您调用函数时,它将正确清除它,而不是在每次调用函数时定义它,请查看下面的工作示例.

希望这可以帮助.

var i = 0;
var timer;

start();

$('#pause').on('click',function(){
  pause()
})

$('#restart').on('click',function(){
  restart()
})

function pause(){
  clearInterval(timer);  
}

function restart(){
  i=0;
  pause()
  start();
}

function start(){
  timer = setInterval(function() { 
    i++;
    console.log('Counting '+i);
  },1000);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id='pause'>Pause</button>
<button id='restart'>Restart</button>
上一篇:javascript – 为什么我的间隔清除只有一半?


下一篇:javascript – 我应该在调用setInterval()之前调用clearInterval()