⊗jsPmTrSB 449 of 505 menu

JavaScript-də timer-i işə salmaq və dayandırmaq düymələri

Gəlin indi iki düymə edək: birincisinə kliklənəndə timer işləsin, ikincisinə kliklənəndə isə dayansın. Burada artıq hər şey o qədər də sadə olmayacaq və bizi sürpriz gözləyir. Bu sürprizin mahiyyətini anlamaq üçün kodu yaratmağı addım-addım yazaq.

Beləliklə, iki kiçik düymə edirik:

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

Bu düymələrə istinadları dəyişənlərə alırıq:

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

Birinci düyməyə kliklənəndə timer-i işə salırıq, onun nömrəsini dəyişənə yazırıq:

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

İndi isə timer-i ikinci düyməyə kliklənəndə dayandıraq:

start.addEventListener('click', function() { let timerId = setInterval(function() { console.log('!') }, 1000); }); // Timer-i dayandırırıq: stop.addEventListener('click', function() { clearInterval(timerId); });

Lakin, yuxarıda göstərilən kodu işə salmağa cəhd etsək, bizi sürpriz gözləyir: timer-i dayandırmağa çalışanda məlum olacaq ki, timerId dəyişəni undefined-a bərabərdir! Niyə belə oldu? Çünki timer-i işə salanda biz timerId dəyişənimizi start düyməsinə bağlanmış funksiya daxilində lokal etdik.

Problemi həll etmək üçün timerId dəyişənini qlobal edək - bu halda o, həm timer-i işə salan funksiyada, həm də dayandıran funksiyada əlçatan olacaq:

let timerId; // dəyişəni qlobal edək start.addEventListener('click', function() { timerId = setInterval(function() { console.log('!') }, 1000); }); stop.addEventListener('click', function() { clearInterval(timerId); });

Tutaq ki, əvvəlcə 100 rəqəmini saxlayan bir dəyişən var. Həmçinin iki düymə var. Birinci düyməyə kliklənəndə hər saniyə dəyişənin qiymətini 1 azaldan və yeni qiyməti konsola çıxaran timer-i işə salın. Dəyişənin qiyməti sıfıra çatan kimi timer-i dayandırın.

İkinci düyməyə kliklənəndə timer-i dayandırın. Həmçinin, ikinci düyməyə kliklənməsə də, dəyişənin qiyməti sıfıra çatanda timer-i dayandırın.

Müəyyən proqramçı düyməyə kliklənəndə cari vaxtı konsola çıxaran timer-i işə salan kodu yazıb:

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

Lakin, kodu işə saldıqdan sonra məlum oldu ki, dayandırma düyməsi işləmir. Kodun müəllifinin səhvini düzəldin.

Başqa bir proqramçı da əvvəlki məsələni həll etmək üçün kod yazıb:

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

Lakin, kodu işə saldıqdan sonra yenə məlum oldu ki, dayandırma düyməsi işləmir. Kodun müəllifinin səhvini düzəldin.

Başqa bir proqramçı da əvvəlki məsələni həll etmək üçün kod yazıb:

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

Lakin, kodu işə saldıqdan sonra yenə məlum oldu ki, dayandırma düyməsi işləmir. Kodun müəllifinin səhvini düzəldin.

Başqa bir proqramçı da əvvəlki məsələni həll etmək üçün kod yazıb:

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

Lakin, kodu işə saldıqdan sonra yenə məlum oldu ki, dayandırma düyməsi işləmir. Kodun müəllifinin səhvini düzəldin.

Nəzəri hissədə təqdim etdiyim kod, start düyməsinə bir neçə dəfə klikləmək olmasını nəzərə almır. Bu problemi düzəltmək üçün start düyməsinə kliklənəndə bu düymədən hadisəni ayırmaq, stop düyməsinə kliklənəndə isə geri bərpa etmək olar. Problemi düzəldin.

Azərbaycan
AfrikaansБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Biz saytin işi, analitika və fərdiləşdirmə üçün cookie istifadə edirik. Məlumatların emalı Məxfilik Siyasəti əsasında həyata keçirilir.
hamısını qəbul et konfiqurasiya et rədd et