Apăsarea repetată a butonului pentru a porni un cronometru în JavaScript
Codul prezentat de mine mai sus, de fapt, are o oarecare problemă. Această problemă se manifestă în cazul în care faceți mai multe clicuri pe butonul nostru. În acest caz, fiecare clic va duce la lansarea unui nou cronometru.
Adică, de exemplu, trei apăsări pe buton vor duce la lansarea a trei cronometre, și fiecare dintre aceste cronometre va afișa valoarea contorului în consolă. Aceasta înseamnă că valorile se vor schimba de trei ori mai repede!
Pentru a rezolva problema descrisă, trebuie pur și simplu să faceți astfel încât apăsarea repetată a butonului să nu mai ducă la lansarea unui nou cronometru. De exemplu, puteți, după startul cronometrului, să dezlegați de pe buton handler-ul de clic atașat:
let start = document.querySelector('#start');
start.addEventListener('click', function func() {
let i = 0;
setInterval(function() {
console.log(++i);
}, 1000);
this.removeEventListener('click', func); // dezlegăm handler-ul
});
Luați soluția dvs. la sarcina anterioară. Verificați dacă apăsarea repetată a butonului duce la accelerarea numărării. Corectați această problemă.