⊗jsPmTrSB 449 of 505 menu

Knappar för att starta och stoppa timer i JavaScript

Låt oss nu göra två knappar: när man klickar på den första ska timern starta, och när man klickar på den andra - ska den stanna. Här kommer det inte att vara lika enkelt och vi möter en fallgrop. För att förstå innebörden av denna fallgrop, kommer jag att beskriva skapandet av koden steg för steg.

Så, vi gör två knappar:

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

Hämta referenser till dessa knappar i variabler:

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

Vid klick på den första knappen startar vi timern och sparar dess ID i en variabel:

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

Och nu stoppar vi timern när man klickar på den andra knappen:

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

Men om man försöker köra koden ovan väntar en överraskning: när man försöker stoppa timern visar det sig att variabeln timerId är undefined! Varför hände detta? Eftersom vi när vi startade timern gjorde vår variabel timerId lokal inuti funktionen som är bunden till knappen start.

För att lösa problemet gör vi variabeln timerId global - i det här fallet kommer den att vara tillgänglig både i funktionen som startar timern och i funktionen som stoppar den:

let timerId; // gör variabeln global start.addEventListener('click', function() { timerId = setInterval(function() { console.log('!') }, 1000); }); stop.addEventListener('click', function() { clearInterval(timerId); });

Låt det finnas en variabel som initialt innehåller talet 100. Det finns också två knappar. När man klickar på den första knappen, starta en timer som varje sekund minskar variabelns värde med 1 och skriver ut det nya värdet till konsolen. När variabelns värde når noll - stoppa timern.

När man klickar på den andra knappen ska timern stoppas. Stoppa även timern om den andra knappen inte trycktes, men variabelns värde nådde noll.

En programmerare skrev kod som vid klick på en knapp startar en timer som skriver ut den aktuella tiden till konsolen:

<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); });

Efter att koden startades visade det sig dock att stoppknappen inte fungerar. Rättaa felet i författarens kod.

En annan programmerare skrev också kod för att lösa föregående uppgift:

<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); });

Efter att koden startades visade det sig dock återigen att stoppknappen inte fungerar. Rättaa felet i författarens kod.

En annan programmerare skrev också kod för att lösa föregående uppgift:

<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); });

Efter att koden startades visade det sig dock återigen att stoppknappen inte fungerar. Rättaa felet i författarens kod.

En annan programmerare skrev också kod för att lösa föregående uppgift:

<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(); });

Efter att koden startades visade det sig dock återigen att stoppknappen inte fungerar. Rättaa felet i författarens kod.

Koden jag visade i den teoretiska delen tar inte hänsyn till att startknappen kan tryckas flera gånger. För att åtgärda detta problem kan man, när startknappen trycks, ta bort event-kopplingen från denna knapp, och när stoppknappen trycks - koppla tillbaka den. Åtgärda problemet.

Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa