⊗jsPmTrSB 449 of 505 menu

JavaScript-ով Ժամանակաչափի Մեկնարկի և Դադարի Կոճակներ

Այժմ եկեք ստեղծենք երկու կոճակ. մեկի վրա կտտացնելիս ժամանակաչափը թող մեկնարկի, իսկ երկրորդի վրա կտտացնելիս` դադարի: Այստեղ ամեն ինչ այնքան էլ պարզ չի լինի, և մեզ սպասվում է որոգայթ: Դրա էությունը հասկանալու համար եկեք քայլ առ քայլ նկարագրենք կոդի ստեղծումը:

Այսպիսով, ստեղծում ենք երկու փոքրիկ կոճակ.

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

Ստանում ենք այդ կոճակների հղումները փոփոխականների մեջ.

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

Առաջին կոճակի վրա կտտացնելիս մեկնարկում ենք ժամանակաչափը` նրա համարը գրելով փոփոխականի մեջ.

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

Իսկ այժմ դադարեցնենք ժամանակաչափը երկրորդ կոճակի վրա կտտացնելիս.

start.addEventListener('click', function() { let timerId = setInterval(function() { console.log('!') }, 1000); }); // Դադարեցնում ենք ժամանակաչափը. stop.addEventListener('click', function() { clearInterval(timerId); });

Սակայն, եթե փորձենք գործարկել վերը նշված կոդը, մեզ սպասվում է անակնկալ. ժամանակաչափը դադարեցնելու փորձի ժամանակ կպարզվի, որ timerId փոփոխականը հավասար է undefined-ի: Ինչու՞ սա տեղի ունեցավ: Քանի որ ժամանակաչափը մեկնարկելիս մենք timerId փոփոխականը դարձրել ենք լոկալ start կոճակին կապված ֆունկցիայի ներսում:

Խնդիրը լուծելու համար timerId փոփոխականը դարձնենք գլոբալ. այս դեպքում այն հասանելի կլինի և՛ ժամանակաչափը մեկնարկող, և՛ այն դադարեցնող ֆունկցիաներում.

let timerId; // փոփոխականը դարձնում ենք գլոբալ start.addEventListener('click', function() { timerId = setInterval(function() { console.log('!') }, 1000); }); stop.addEventListener('click', function() { clearInterval(timerId); });

Ենթադրենք, տրված է մի փոփոխական, որում սկզբնապես պահվում է 100 թիվը: Տրված են նաև երկու կոճակ: Առաջին կոճակի վրա կտտացնելիս գործարկեք մի ժամանակաչափ, որը ամեն վայրկյան կնվազեցնի փոփոխականի արժեքը 1-ով և կարտածի նոր արժեքը կոնսոլ: Հենց փոփոխականի արժեքը հասնի զրոյի` դադարեցրեք ժամանակաչափը:

Երկրորդ կոճակի վրա կտտացնելիս դադարեցրեք ժամանակաչափը: Նաև դադարեցրեք ժամանակաչափը, եթե երկրորդ կոճակը չի սեղմվել, բայց փոփոխականի արժեքը հասել է զրոյի:

Ինչ-որ ծրագրավորող գրել է կոդ, որը կոճակի վրա կտտացնելիս մեկնարկում է մի ժամանակաչափ, որն արտածում է ընթացիկ ժամանակը կոնսոլ.

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

Սակայն կոդի գործարկումից հետո պարզվեց, որ դադարի կոճակը չի աշխատում: Ուղղեք կոդի հեղինակի սխալը:

Մեկ այլ ծրագրավորող նույնպես գրել է կոդ նախորդ խնդիրը լուծելու համար.

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

Սակայն կոդի գործարկումից հետո նորից պարզվեց, որ դադարի կոճակը չի աշխատում: Ուղղեք կոդի հեղինակի սխալը:

Մեկ այլ ծրագրավորող նույնպես գրել է կոդ նախորդ խնդիրը լուծելու համար.

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

Սակայն կոդի գործարկումից հետո նորից պարզվեց, որ դադարի կոճակը չի աշխատում: Ուղղեք կոդի հեղինակի սխալը:

Մեկ այլ ծրագրավորող նույնպես գրել է կոդ նախորդ խնդիրը լուծելու համար.

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

Սակայն կոդի գործարկումից հետո նորից պարզվեց, որ դադարի կոճակը չի աշխատում: Ուղղեք կոդի հեղինակի սխալը:

Տեսական մասում բերված իմ կոդը հաշվի չի առնում, որ մեկնարկի կոճակի վրա կարելի է մի քանի անգամ կտտացնել: Այս խնդիրը ուղղելու համար կարելի է մեկնարկի կոճակի վրա կտտացնելիս անջատել իրադարձությունը այդ կոճակից, իսկ դադարի կոճակի վրա կտտացնելիս` կրկին կապել այն: Ուղղեք խնդիրը:

Հայերեն
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Մենք օգտագործում ենք cookie-ներ կայքի աշխատանքի, վերլուծության և անհատականացման համար։ Տվյալների մշակումը կատարվում է համաձայն Գաղտնիության քաղաքականության։
ընդունել բոլորը կարգավորել մերժել