Многократно натискане на бутон за стартиране на таймер с JavaScript
Кодът, който цитирах по-горе, всъщност има един проблем. Този проблем се проявява в случая, ако се направят няколко клика върху нашия бутон. В този случай всеки клик ще доведе до стартиране на нов таймер.
Тоест, например, три натискания върху бутона ще доведат до това, че ще бъдат стартирани три таймера, и всеки от тези таймери ще извежда стойността на брояча в конзолата. Това означава, че стойностите ще се променят три пъти по-бързо!
За решаване на описания проблем просто трябва да се направи така, че повторно натискане на бутона да не води до ново стартиране на таймера. Например, след стартиране на таймера може да се откачи от бутона свързания обработващ функция за клик:
let start = document.querySelector('#start');
start.addEventListener('click', function func() {
let i = 0;
setInterval(function() {
console.log(++i);
}, 1000);
this.removeEventListener('click', func); // откачаме обработващата функция
});
Вземете вашето решение от предишната задача. Проверете, че многократното натискане на бутона води до ускорено отброяване. Корегирайте този проблем.