Задать вопрос
@id_nomer_odin1

Как сделать так, чтобы когда наступало время 8:00, то выводилось «Урок начался!», а когда наступало 8:40 — «Урок закончился!»?

<div id="time"></div>

let clock = document.getElementById("time")

var time = setInterval(function() {
  var date = new Date();
  clock.innerHTML = (date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds());
}, 1000);

// Остановить исполнение можно вызовом clearInterval(time).

let interval = setInterval(() => {
  if(clock.textContent <= '8:00:0'){
    alert('Урок начался!');
    clearInterval(interval)
  }
    else(clock.textContent >= '8:40:0'){
    alert('Урок закончился!');
    clearInterval(interval)
  }
}, 500)
  • Вопрос задан
  • 170 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
noder_ss
@noder_ss
Линуксоид-энтузиаст и SQL разработчик
Попробуй так
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <p class="p"></p>
</body>
<script>
let p = document.querySelector('.p')
let date = new Date
setInterval(() => {
    
    if(date.getHours() == 8 && date.getMinutes() == 40){
        p.textContent = "Урок окончен"
    }
}, 0);
setInterval(() => {
    
    if(date.getHours() == 8 && date.getMinutes() == 0){
        p.textContent = "Урок начат"
    }
}, 0);

</script>
</html>
Ответ написан
sergiks
@sergiks Куратор тега JavaScript
♬♬
1-й вариант: поймать однократное «событие» — предыдущее время было «не то», и вот сейчас стало «то» – тогда вывести что-то. Это можно ловить в таймере, который обновляет часы. И его стоит запускать чаще, чем раз в секунду, чтобы время точнее щелкало, иначе могут пропускаться отдельные секунды.

2-й вариант, менее точный, т.к. таймеры в JavaScript могут здорово отклоняться от реального времени. В момент запуска вычислить, сколько там времени осталось до 08:00 и до 08:40, и зарядить два setTimeout() на нужные количества миллисекунд.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы