@advancesss

Как остановить таймер через заданный интервал времени?

Приветствую. Подскажите пожалуйста, как остановить таймер после того как он проиграл один раз (либо через 24 минуты)

<div class="timer">
                  <span id="hours"></span>
                  <span id="delimiter">:</span>
                  <span id="minutes"></span>
                  <span id="delimiter">:</span>
                  <span id="seconds"></span>
               </div>

function updater(d, h, m, s) {
         
           var baseTime = Date.parse(new Date());
           // Период сброса — 1 день
         
           var period = 1*24*60*60*1000;
         
         
           function update() {
			
             var cur = new Date();
             // сколько осталось миллисекунд
             var diff = period + (cur - baseTime) % period;
         	var diff = period + (cur - baseTime) % period;
             // сколько миллисекунд до конца секунды
             var millis = diff % 16.66666;
             diff = Math.floor(diff/16.66666);
             // сколько секунд до конца минуты
             var sec = diff % 60;
             if(sec < 10) sec = "0"+sec;
             diff = Math.floor(diff/60);
             // сколько минут до конца часа
             var min = diff % 60;
             if(min < 10) min = "0"+min;
             diff = Math.floor(diff/60);
             // сколько часов до конца дня
             var hours = diff % 24;
             if(hours < 10) hours = "0"+hours;
             var days = Math.floor(diff / 24);
           
             h.innerHTML = hours;
             m.innerHTML = min;
             s.innerHTML = sec;
           
             // следующий раз вызываем себя, когда закончится текущая секунда
             setTimeout(update, millis);
         	
           }
           setTimeout(update, 0);
		
               
         
         }
         
         
         
         updater(document.getElementById("days"),
          document.getElementById("hours"), document.getElementById("minutes"),
          document.getElementById("seconds"));
  • Вопрос задан
  • 72 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Aricus
// следующий раз вызываем себя, когда закончится текущая секунда
setTimeout(update, millis);

Нужно написать для этой команды условие. За правильность не ручаюсь, тестировать не буду, но примерно так:
if ((diff < 1000) || (cur - baseTime > 24*60*1000)) {
  setTimeout(update, millis);
}
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы