Večkratno kliknjenje gumba za zagon časovnika v JavaScriptu
Koda, ki sem jo pripel zgoraj, ima pravzaprav določeno težavo. Ta težava se pokaže v primeru, če na naš gumb naredimo več klikov. V tem primeru bo vsak klik povzročil zagon novega časovnika.
To pomeni, na primer, da bodo trije pritiski na gumb povzročili, da se bodo zagnali trije časovniki, in vsak od teh časovnikov bo izpisoval vrednost števca v konzolo. To pomeni, da se bodo vrednosti spreminjale trikrat hitreje!
Za rešitev opisane težave je treba preprosto narediti tako, da ponovni pritisk na gumb ne bo povzročil novega zagona časovnika. Na primer, lahko po zagonu časovnika odvežemo z gumba pripeti obravnavalnik klika:
let start = document.querySelector('#start');
start.addEventListener('click', function func() {
let i = 0;
setInterval(function() {
console.log(++i);
}, 1000);
this.removeEventListener('click', func); // odvežemo obravnavalnik
});
Vzemite vašo rešitev prejšnje naloge. Preverite, da večkratno kliknjenje na gumb povzroči pospešeno odštevanje. Popravite to težavo.