javascript - 为什么我不能在下面的示例中使用 clearInterval?

标签 javascript jquery setinterval

我有以下问题。当 timer_mou 开始计数时,当 pause 等于 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 - 为什么我不能在下面的示例中使用 clearInterval?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41350392/

相关文章:

javascript - 脚本未直接加载

javascript - 如果找到/返回有效的 JSON,则禁用带有 jQ​​uery 单击事件的 href 链接

javascript - 使用 setInterval 隐藏和显示循环

javascript - JS : What is the proper way to count time after starting a timer?

javascript - 合并 JSON 数组

javascript - 如何使用 componentWillUnmount 删除 React.js 中的 setInterval

javascript - 在添加到 DOM 之前获取元素的高度

javascript - 如何防止 Angular 提供程序多次加载

javascript - 如何查找最小/最大日期 javascript

javascript - 将一个文本输入字段中的值添加到预先填充的输入字段