таймер обратного отчета

251
30 января 2018, 11:46
  1. alert срабатывает когда число меньше 0, но когда он срабатывает, число больше, а после подтверждения или отмены его, число меняется на более меньшее. почему?
  2. Почему alert срабатывает быстрее чем timeElem.innerHTML = "0:0:0:0";? Значение в timeElem.innerHTML такое как надо, на на странице не успевает обновиться раньше, чем запуститься сам alert.

P.S: во втором примере, я перед alert('Готово'); добавил timeElem.innerHTML = "0:0:0:0";, ибо проверки на миллисекунды нету, и в следствии число будет 0.999. Таймер не идеален, но суть сейчас не в этом.

1.

var timeElem = document.getElementById('time'),  
		countdown = new Date(), 
		responseTime = new Date(Date.now() + (1000*10)); // таймер 10 секунд 
 
function startTime() { 
  countdown.setTime(responseTime - Date.now()); 
  timeElem.innerHTML = countdown.getUTCHours() + ':' + countdown.getUTCMinutes() + ':' + countdown.getUTCSeconds() + ':' + countdown.getUTCMilliseconds(); 
  if(countdown.getUTCHours() > 0 || countdown.getUTCMinutes() > 0 || countdown.getUTCSeconds() > 0) { 
    requestAnimationFrame(startTime); 
  } else { 
    alert('Готово'); 
  } 
} 
requestAnimationFrame(startTime);
<div id="time"></div>

2.

var timeElem = document.getElementById('time'),  
		countdown = new Date(), 
		responseTime = new Date(Date.now() + (1000*10)); // таймер 10 секунд 
 
function startTime() { 
  countdown.setTime(responseTime - Date.now()); 
  timeElem.innerHTML = countdown.getUTCHours() + ':' + countdown.getUTCMinutes() + ':' + countdown.getUTCSeconds() + ':' + countdown.getUTCMilliseconds(); 
  if(countdown.getUTCHours() > 0 || countdown.getUTCMinutes() > 0 || countdown.getUTCSeconds() > 0) { 
    requestAnimationFrame(startTime); 
  } else { 
    timeElem.innerHTML = "0:0:0:0"; 
    alert('Готово'); 
  } 
} 
requestAnimationFrame(startTime);
<div id="time"></div>

READ ALSO
Почему событие click в jQuery не срабатывает второй раз? [требует правки]

Почему событие click в jQuery не срабатывает второй раз? [требует правки]

Есть событие которое, по клику на кнопку, добавляет HTML код на страницу

274
Как, чтобы кнопка назад возвращала на предыдущий экран при infinite scroll?

Как, чтобы кнопка назад возвращала на предыдущий экран при infinite scroll?

Реализовал бесконечную прокрутку постов по этому руководствуВот основной код скрипта бесконечной загрузки постов при прокрутке страницы

219
Интеграция vue на сайт написанный на backbone

Интеграция vue на сайт написанный на backbone

Доброго времениЕсть сайт написанный на backbone и появилась задача расширить его функционал

234
Chart JS, пропадает tooltip после обновления графика

Chart JS, пропадает tooltip после обновления графика

В либе для графиков Chart JSПосле пуша в массив data и обновления графика, chart

205