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

Почему не работает таймер когда наступает новый час?

window.onload = function() {
						  var minute = '<?=$m?>';
						  var sec = '<?=$s?>';
						  var h = '<?=$h?>';
						  setInterval(function() {
						    document.getElementById("t").innerHTML = h+minute + ":" + sec;
						    sec++;
						    if (sec < 10) {sec = '0'+sec;}
						    if (sec == '60') {
						      	minute++;
						      	if (minute < 10) {minute = '0'+minute;}
						      	if (minute == '60') {
						      		hours++;
						      		minute = '00'; sec = '00';
						      	} sec = '00';
						    }
						  }, 1000);
						}

Минуты и секунды все отлично, но когда наступает новый час - 1:60:196 это результат.
Помогите разобраться пожалуйста(
  • Вопрос задан
  • 100 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
@Paul14
window.onload = () => {
let [minute, sec, h] = ['<?=$m?>', '<?=$s?>', '<?=$h?>'];

setInterval(() => {
document.getElementById("t").innerHTML = ${h}:${minute}:${sec};
sec++;

if (sec < 10) sec = '0' + sec;

if (sec == '60') {
  minute++;
  
  if (minute < 10) minute = '0' + minute;
  
  if (minute == '60') {
    h++;
    minute = '00';
    sec = '00';
  }        
  sec = '00';
}
}, 1000);
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Aetae
@Aetae Куратор тега JavaScript
Тлен
Открываешь консоль и видишь там красный текст "hours is undefined" или типа того. Понимаешь, что у тебя в коде задано не hours, а h, исправляешь и не отвлекаешь людей тупыми вопросами.

P.S. Для таймера правильно использовать Date, время исполнения setInterval может быть изменено со стороны браузера или из-за нагрузки.
Ответ написан
2011mckinsey
@2011mckinsey
Web Developer
Вот так все будет работать:
https://youtu.be/q_dH_YBnAxU?si=Z17VEbfs1XhdZb-g
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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