SetInterval bilan rangli soat
Quyidagi kabi rangli soat yarating:
Styling uchun HTML/CSS dan foydalaning, JavaScript faqat elementlardagi vaqtni yangilaydi.
Soat dasturini yaratish
Avval HTML/CSS yarataylik.
Vaqtning har bir komponenti oâzining <span> da ajoyib koârinadi:
<div id="clock">
<span class="hour">hh</span>:<span class="min">mm</span>:<span class="sec"
>ss</span
>
</div>
Shuningdek, ularni rangga solish uchun CSS kerak boâladi.
update funksiyasi soatni yangilaydi, har soniyada setInterval tomonidan chaqiriladi:
function update() {
let clock = document.getElementById('clock');
let date = new Date(); // (*)
let hours = date.getHours();
if (hours < 10) hours = '0' + hours;
clock.children[0].innerHTML = hours;
let minutes = date.getMinutes();
if (minutes < 10) minutes = '0' + minutes;
clock.children[1].innerHTML = minutes;
let seconds = date.getSeconds();
if (seconds < 10) seconds = '0' + seconds;
clock.children[2].innerHTML = seconds;
}
(*) qatorida biz har safar joriy sanani tekshiramiz. setInterval chaqiruvlari ishonchli emas: ular kechikishlar bilan sodir boâlishi mumkin.
Soatni boshqaradigan funksiyalar:
let timerId;
function clockStart() {
// soatni ishga tushirish
if (!timerId) {
// faqat soat ishlamayotgan bo'lsa yangi interval o'rnatish
timerId = setInterval(update, 1000);
}
update(); // (*)
}
function clockStop() {
clearInterval(timerId);
timerId = null; // (**)
}
Eâtibor bering, update() ga chaqiruv nafaqat clockStart() da rejalashtiriladi, balki (*) qatorida darhol ishga tushiriladi. Aks holda tashrif buyuruvchi setInterval ning birinchi bajarilishini kutishi kerak boâladi. Va oâsha vaqtgacha soat boâsh boâladi.
Shuningdek, clockStart() da yangi intervalni faqat soat ishlamayotgan vaqtda oârnatish muhim. Aks holda start tugmasini bir necha marta bosish bir nechta parallel intervallarni oârnatadi. Bundan ham yomoni â biz faqat oxirgi intervalning timerID sini saqlashimiz va boshqalariga havolalarni yoâqotishimiz mumkin. Keyin biz soatni boshqa hech qachon toâxtata olmaymiz! Eâtibor bering, soat toâxtatilganda (**) qatorida timerID ni tozalashimiz kerak, shunda uni clockStart() ni ishga tushirish orqali yana ishga tushirish mumkin boâladi.