#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
Комментариев нет:
Отправить комментарий