⊗jsPmTrSB 449 of 505 menu

Gumbi za zagon in ustavitev časovnika v JavaScriptu

Zdaj naredimo dva gumba: ob kliku na prvi se naj časovnik zažene, ob kliku na drugega pa ustavi. Tukaj že vse ne bo tako preprosto in čaka nas past. Da bi razumeli bistvo te past, opisal bom izdelavo kode po korakih.

Torej, naredimo dva gumba:

<button id="start">start</button> <button id="stop">stop</button>

Dobimo povezave do teh gumbov v spremenljivke:

let start = document.querySelector('#start'); let stop = document.querySelector('#stop');

Ob kliku na prvi gumb zaženemo časovnik, zapisemo njegovo številko v spremenljivko:

start.addEventListener('click', function() { let timerId = setInterval(function() { console.log('!') }, 1000); });

In zdaj ustavimo časovnik ob kliku na drugi gumb:

start.addEventListener('click', function() { let timerId = setInterval(function() { console.log('!') }, 1000); }); // Ustavimo časovnik: stop.addEventListener('click', function() { clearInterval(timerId); });

Vendar, če poskušamo zagnati zgornjo kodo, nas čaka presenečenje: ob poskusu ustavitev časovnika se izkaže, da je spremenljivka timerId enaka undefined! Zakaj se je to zgodilo? Ker smo ob zagonu časovnika naredili našo spremenljivko timerId lokalno znotraj funkcije, povezane z gumbom start.

Za rešitev problema naredimo spremenljivko timerId globalno - v tem primeru bo dostopna tako v funkciji za zagon časovnika, kot tudi v funkciji zaustavitve:

let timerId; // naredimo spremenljivko globalno start.addEventListener('click', function() { timerId = setInterval(function() { console.log('!') }, 1000); }); stop.addEventListener('click', function() { clearInterval(timerId); });

Naj bo podana spremenljivka, v kateri sprva shranjena številka 100. Podana sta tudi dva gumba. Ob kliku na prvi gumb zaženite časovnik, ki bo vsako sekundo zmanjšal vrednost spremenljivke za 1 in izpisal novo vrednost v konzolo. Ko vrednost spremenljivke doseže nič - ustavite časovnik.

Ob kliku na drugi gumb ustavite časovnik. Prav tako ustavite časovnik, če drugi gumb ni bil kliknjen, vendar je vrednost spremenljivke dosegla nič.

Nek programer je napisal kodo, ki ob kliku na gumb zažene časovnik, ki izpiše v konzolo trenutni čas:

<input type="submit" id="start" value="start"> <input type="submit" id="stop" value="stop"> let start = document.querySelector('#start'); let stop = document.querySelector('#stop'); start.addEventListener('click', function() { let timerId = setInterval(function() { let date = new Date; console.log(date.getMinutes() + ' ' + date.getSeconds()); }, 1000); }); stop.addEventListener('click', function() { clearInterval(timerId); });

Po zagonu kode pa se je izkazalo, da gumb za ustavitev ne deluje. Popravite napako avtorja kode.

Še en programer je prav tako napisal kodo za rešitev prejšnje naloge:

<input type="submit" id="start" value="start"> <input type="submit" id="stop" value="stop"> let start = document.querySelector('#start'); let stop = document.querySelector('#stop'); let timerId; start.addEventListener('click', function() { let timerId = setInterval(function() { let date = new Date; console.log(date.getMinutes() + ' ' + date.getSeconds()); }, 1000); }); stop.addEventListener('click', function() { clearInterval(timerId); });

Po zagonu kode pa se je spet izkazalo, da gumb za ustavitev ne deluje. Popravite napako avtorja kode.

Še en programer je prav tako napisal kodo za rešitev prejšnje naloge:

<input type="submit" id="start" value="start"> <input type="submit" id="stop" value="stop"> let start = document.querySelector('start'); let stop = document.querySelector('stop'); let timerId; start.addEventListener('click', function() { setInterval(function() { let date = new Date; console.log(date.getMinutes() + ' ' + date.getSeconds()); }, 1000); }); stop.addEventListener('click', function() { clearInterval(timerId); });

Po zagonu kode pa se je spet izkazalo, da gumb za ustavitev ne deluje. Popravite napako avtorja kode.

Še en programer je prav tako napisal kodo za rešitev prejšnje naloge:

<input type="submit" id="start" value="start"> <input type="submit" id="stop" value="stop"> let start = document.querySelector('start'); let stop = document.querySelector('stop'); let timerId; start.addEventListener('click', function() { let timerId = setInterval(function() { let date = new Date; console.log(date.getMinutes() + ' ' + date.getSeconds()); }, 1000); }); stop.addEventListener('click', function() { clearInterval(); });

Po zagonu kode pa se je spet izkazalo, da gumb za ustavitev ne deluje. Popravite napako avtorja kode.

Zgoraj prikazana koda v teoretičnem delu ne upošteva, da je na gumb start mogoče narediti več klikov. Za popravo te težave je mogoče ob kliku na gumb start odpeti dogodek od tega gumba, ob kliku na gumb stop pa ga ponovno pripeti. Popravite težavo.

Slovenščina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni