РозÑаÑбÑйÑе годиник за Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ setInterval
СÑвоÑÑÑÑ ÐºÐ¾Ð»ÑоÑовий годинник Ñк Ñ ÑÑÐ¾Ð¼Ñ Ð¿ÑикладÑ:
ÐикоÑиÑÑовÑйÑе HTML/CSS Ð´Ð»Ñ ÑÑилÑзаÑÑÑ, JavaScript лиÑе оновлÑÑ ÑÐ°Ñ Ð² елеменÑÐ°Ñ .
ÐÑдкÑиÑи пÑÑоÑниÑÑ Ð´Ð»Ñ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ.
СпоÑаÑкÑ, напиÑемо HTML/CSS.
Ðожен ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ ÑаÑÑ Ð¾Ð±Ð³Ð¾Ñнемо Ñ <span>:
<div id="clock">
<span class="hour">hh</span>:<span class="min">mm</span>:<span class="sec">ss</span>
</div>
РозÑаÑбÑÑмо кожен <span> за Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ CSS.
ФÑнкÑÑÑ update оновлÑваÑиме годинник, а меÑод setInterval викликаÑиме ÑÑ ÑоÑекÑнди.
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;
}
Ð ÑÑÐ´ÐºÑ (*) ми ÑоÑÐ°Ð·Ñ Ð¿ÐµÑевÑÑÑÑмо поÑоÑÐ½Ñ Ð´Ð°ÑÑ. Ðиклики setInterval не надÑйнÑ: вони можÑÑÑ Ð²ÑдбÑваÑиÑÑ Ð· заÑÑимкоÑ.
ФÑнкÑÑÑ Ð´Ð»Ñ ÑпÑавлÑÐ½Ð½Ñ Ð³Ð¾Ð´Ð¸Ð½Ð½Ð¸ÐºÐ¾Ð¼:
let timerId;
function clockStart() { // ÑвÑмкнÑÑи годинник
if (!timerId) { // вÑÑановиÑи новий ÑнÑеÑвал, ÑкÑо годинник не ÑвÑмкнений
timerId = setInterval(update, 1000);
}
update(); // (*)
}
function clockStop() {
clearInterval(timerId);
timerId = null; // (**)
}
ÐÑÐ´Ñ Ð»Ð°Ñка, звеÑнÑÑÑ ÑвагÑ, Ñо виклик update() не ÑÑлÑки заплановано в clockStart(), а Ñе й негайно виконÑÑÑÑÑÑ Ð² ÑÑÐ´ÐºÑ (*). ÐнакÑе вÑдвÑдÑÐ²Ð°Ñ Ð¿Ð¾Ð²Ð¸Ð½ÐµÐ½ бÑв би ÑекаÑи до пеÑÑого Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ setInterval. Рдо Ñого ÑаÑÑ Ð³Ð¾Ð´Ð¸Ð½Ð½Ð¸Ðº бÑв би поÑожнÑм.
Також важливо вÑÑановиÑи новий ÑнÑеÑвал Ñ clockStart() лиÑе ÑодÑ, коли годинник не пÑаÑÑÑ. ÐнакÑе наÑиÑÐºÐ°Ð½Ð½Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸ «ÐÑÑк» кÑлÑка ÑазÑв вÑÑановиÑÑ ÐºÑлÑка одноÑаÑниÑ
ÑнÑеÑвалÑв. Ще гÑÑÑе â ми запамâÑÑаÑмо лиÑе timerID оÑÑаннÑого ÑнÑеÑвалÑ, вÑÑаÑивÑи поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° вÑÑ ÑнÑÑ. Ð ÑÐ°ÐºÐ¾Ð¼Ñ ÑÐ°Ð·Ñ Ð¼Ð¸ б нÑколи бÑлÑÑе не змогли зÑпиниÑи годинник! ÐаÑважÑе, в ÑÑÐ´ÐºÑ (**) нам поÑÑÑбно оÑиÑÑиÑи timerID, коли годинник зÑпинено, Ñоб його можна бÑло Ð·Ð½Ð¾Ð²Ñ ÑвÑмкнÑÑи, запÑÑÑивÑи clockStart().