Javascript JS:无法使用clearInterval停止setInterval
你好,我又碰到了一个问题 我创建了一个使按钮像不倒翁一样工作的功能。但我找不到从另一个按钮状态用clearInterval停止setInterval的方法Javascript JS:无法使用clearInterval停止setInterval,javascript,button,setinterval,clearinterval,Javascript,Button,Setinterval,Clearinterval,你好,我又碰到了一个问题 我创建了一个使按钮像不倒翁一样工作的功能。但我找不到从另一个按钮状态用clearInterval停止setInterval的方法 function goIdle(checker) { if(checker===1){ buttonDeeper.disabled=true; var intIdle=(setInterval(goDeeperTest, 2000));//(600000-(bootTier*600))); buttonIdle.value='Останови
function goIdle(checker)
{
if(checker===1){
buttonDeeper.disabled=true;
var intIdle=(setInterval(goDeeperTest, 2000));//(600000-(bootTier*600)));
buttonIdle.value='Остановиться';
buttonIdle.addEventListener('click', function() {goIdle(2)}, false);
}
if (checker===2) {
clearInterval(intIdle);
buttonDeeper.disabled = false;
buttonIdle.value='Разбежаться';
buttonIdle.addEventListener('click', function() {goIdle(1)}, false);
}
intIdle变量是goIdle函数的一次执行的局部变量。在外部范围中声明它,以便在函数执行之间保留它:
var intIdle;
function goIdle(checker)
{
if(checker===1){
buttonDeeper.disabled=true;
intIdle=(setInterval(goDeeperTest, 2000));//(600000-(bootTier*600)));
buttonIdle.value='Остановиться';
buttonIdle.addEventListener('click', function() {goIdle(2)}, false);
}
if (checker===2) {
clearInterval(intIdle);
buttonDeeper.disabled = false;
buttonIdle.value='Разбежаться';
buttonIdle.addEventListener('click', function() {goIdle(1)}, false);
}
但另一个问题是,您似乎从未删除事件侦听器。因此,每次单击时,您都会调用其中一个。它不能工作。你真正想要的是
buttonIdle.addEventListener('click', goIdle, false);
var intIdle;
function goIdle() {
if (intIdle) {
clearInterval(intIdle);
buttonIdle.value='Разбежаться';
buttonDeeper.disabled = false;
intIdle = 0;
} else {
intIdle=setInterval(goDeeperTest, 2000);
buttonDeeper.disabled = true;
buttonIdle.value='Остановиться';
}
}
而不是
buttonIdle.addEventListener('click', function() {goIdle(2)}, false);
使用
否则,您的按钮会一直有两个侦听器。成功了。单击按钮后,SetInterval仍然有效。您可能会添加的另一个问题是,您似乎从未删除事件侦听器。因此,每次单击时,您都会调用其中一个。如果我明白你想做什么,我编辑阿特姆苏奇科夫来解决这个问题。
buttonIdle.onclick = function() {goIdle(2)}, false);