⊗jsPmTrSB 449 of 505 menu

Butoane pentru pornirea și oprirea cronometrului în JavaScript

Să facem acum două butoane: la click pe primul să pornească cronometrul, iar la click pe al doilea - să se oprească. Aici deja lucrurile nu vor fi atât de simple și ne așteaptă o capcană. Pentru a înțelege esența acestei capcane, voi descrie crearea codului pas cu pas.

Așadar, facem două butoane:

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

Obținem referințele la aceste butoane în variabile:

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

La click pe primul buton pornim cronometrul, înregistrându-i numărul într-o variabilă:

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

Și acum oprim cronometrul la click pe al doilea buton:

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

Cu toate acestea, dacă încercăm să rulăm codul de mai sus, ne așteaptă o surpriză: la încercarea de a opri cronometrul se va dovedi că variabila timerId este egală cu undefined! De ce sa întâmplat asta? Pentru că la pornirea cronometrului am făcut variabila noastră timerId locală în interiorul funcției atașate butonului start.

Pentru a rezolva problema, să facem variabila timerId globală - în acest caz ea va fi accesibilă atât în funcția de pornire a cronometrului, cât și în funcția de oprire:

let timerId; // facem variabila globală start.addEventListener('click', function() { timerId = setInterval(function() { console.log('!') }, 1000); }); stop.addEventListener('click', function() { clearInterval(timerId); });

Să presupunem că avem o variabilă în care inițial este stocat numărul 100. Sunt date și două butoane. La click pe primul buton porniți un cronometru care la fiecare secundă va micșora valoarea variabilei cu 1 și va afișa valoarea nouă în consolă. Opriți cronometrul când valoarea variabilei atinge zero.

La click pe al doilea buton opriți cronometrul. De asemenea, opriți cronometrul dacă al doilea buton nu a fost apăsat, dar valoarea variabilei a atins zero.

Un anumit programator a scris cod care la click pe un buton pornește un cronometru, afișând în consolă momentul curent de timp:

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

După rularea codului, totuși, s-a dovedit că butonul de oprire nu funcționează. Corectați eroarea autorului codului.

Încă un programator a scris cod pentru rezolvarea sarcinii precedente:

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

După rularea codului, totuși, din nou s-a dovedit, că butonul de oprire nu funcționează. Corectați eroarea autorului codului.

Încă un programator a scris cod pentru rezolvarea sarcinii precedente:

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

După rularea codului, totuși, din nou s-a dovedit, că butonul de oprire nu funcționează. Corectați eroarea autorului codului.

Încă un programator a scris cod pentru rezolvarea sarcinii precedente:

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

După rularea codului, totuși, din nou s-a dovedit, că butonul de oprire nu funcționează. Corectați eroarea autorului codului.

Codul prezentat de mine în partea teoretică nu ține cont de faptul că pe butonul start se poate face mai multe click-uri. Pentru a corecta această problemă se poate la click pe butonul start să se dezactiveze evenimentul de la acest buton, iar la click pe butonul stop - să se reactiveze. Corectați problema.

Română
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Folosim cookie pentru funcționarea site-ului, analiză și personalizare. Prelucrarea datelor are loc în conformitate cu Politica de confidențialitate.
acceptă toate configurează respinge