Правильный способ установить Interval и clearInterval

Относительный новичок в JS, пытаясь обернуть мою голову вокруг планирования. Этот код начнет добавление, но не остановит его. Я уверен, что проблема в том, что clearInterval должен обращаться к переменной, которой была назначена функция setInterval. Кажется, я не могу понять, как правильно это сформулировать.

var hmm = function appendStuff(){
    $("p").append("<b>Appended text</b>");
};
$("#start").click(function() {   
    console.log("startClicked");  // working... 
    window.setInterval(hmm, 1000) // working...
}); 
$("#stop").click(function() {   
    console.log("stopClicked");  // working...  
    window.clearInterval(hmm)
}); 

Спасибо!

3 ответа

Решение

setInterval() Функция возвращает идентификатор. Это то, что вы хотите назначить hmm,

Также первый параметр setInterval() это функция, которую вы хотите вызывать каждый интервал.

var hmm = null;
function appendStuff(){
    $("p").append("<b>Appended text</b>");
};
$("#start").click(function() {   
    console.log("startClicked");  // working... 
    hmm = window.setInterval(appendStuff, 1000) // working...
}); 
$("#stop").click(function() {   
    console.log("stopClicked");  // working...  
    window.clearInterval(hmm)
}); 

Вам необходимо присвоить объект setInterval переменной и передать его clearInterval, а не переменную funciton SetInterval в clearInterval. Обратитесь сюда.

var hmm = function appendStuff(){
    $("p").append("<b>Appended text</b>");
};
var interval;
$("#start").click(function() {   
    console.log("startClicked");  // working... 
    interval = window.setInterval(hmm, 1000) // working...
}); 
$("#stop").click(function() {   
    console.log("stopClicked");  // working...  
    window.clearInterval(interval)
}); 

Вы можете использовать этот пример setInterval() из w3School здесь. В основном вы используете синтаксис, например:

var yourIntervalVariable = setInterval(function(){
  // do something here..
}, 1000);

И тогда вы можете использовать clearInterval() для переменной следующим образом:

clearInterval(yourIntervalVariable);
Другие вопросы по тегам