Страницы

Поиск по вопросам

пятница, 13 декабря 2019 г.

Как останавливать функцию на js?

#javascript


Создал простой Таймер 

  function timer() {
  setInterval(function timer() {
    var label = document.getElementById('label');
    label.innerHTML = parseInt(label.innerHTML) + 1;
}, 1000);
  }


Так вот как можно останавливать его внутри другой функции? Без использования Jquery!
    


Ответы

Ответ 1



var i = 0; var timerId = 0; function timer() { timerId = setInterval(function () { //Здесь код в цикле console.log(i++); }, 1000); } function stopTimer(){ clearInterval(timerId); }
setInterval возвращает id, который нужно передать clearInterval(id), для того чтоб остановилось, см. пример

Ответ 2



Функции setTimeout и setInterval возвращают идентификатор, который можно передать в функции остановки таймеров clearTimeout и clearInterval соответственно. Нужно просто сохранить возвращённый id и, при надобности, передать его в очищающую функцию. Например так: function timer() { // Сохраняем в свойстве объекта функции, индивидуально и внешние переменные не нужны timer.id = setInterval(() => { let label = document.querySelector('#label'); label.innerHTML = (parseInt(label.innerHTML) || 0) + 1; }, 1000); } // По клику запускаем таймер document.querySelector('#start').addEventListener('click', e => timer()); // По клику запускаем функцию очистки, т. к. timer.id - не приватное свойство // P. S. Кнопкой старта можно продолжить счёт document.querySelector('#stop').addEventListener('click', e => clearInterval(timer.id));
0




Комментариев нет:

Отправить комментарий