У меня на бэкэнде время в формате 00:12:54, и я показываю его на экране. Но я бы хотел на этот раз продолжить спуск. Однако мне нужно создать переменную в javascript, которая будет старым по времени и с setTimeout для цикла для отображения с помощью document.getElementById нового значения. Я думаю, что это может быть проблематично, если у меня есть много времени, чтобы спуститься одновременно. Мне может потребоваться массив?
Как бы Вы это сделали? Если у меня нет другого предложения, я попробую свой путь, но мне любопытно узнать, есть ли у него более безопасный способ сделать это.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы знаете jQuery Framework? Это фреймворк Javascript, в котором есть множество утилит, методов и функций, которые упрощают работу с Javascript.
Вот плагин обратного отсчета (не тестировал).
Я предлагаю вам скачать JQuery, чем скачать плагин. Посмотрите образец кода из «относительной» вкладки на сайте. У вас может быть что-то вроде:
$('#until2d4h').countdown({until: '+12M +54S'});
* Единственный недостаток того, что я предлагаю вам, это то, что вам потребуется добавить 2 .js. Старайтесь добавлять их только тогда, когда это необходимо, и вас обязательно найдут.
Хороший, но я не хочу использовать все эти файлы .js.
Этот вкус вам не понравится, но он вам пойдет на пользу:
Погуглите по запросу "таймер javascript" и прочтите различные примеры и учебные пособия, найденные в результате этого поиска.
Вы узнаете гораздо больше, чем просто написать таймер обратного отсчета. :-)
Удачи!
Общий алгоритм:
window.setTimeout, чтобы вызвать себя через 1000 мс (или настроить в соответствии со временем, прошедшим внутри функции), если вы хотите продолжить обратный отсчет.Вот черновой вариант:
window.onload = function () {
var countdown_start_in_ms = 6000; // from server
function tick() {
var now = new Date().getTime();
var disp = start - now;
if (disp < 0) {
disp = 0;
}
var el = document.getElementById("countdown");
el.innerHTML =
// quick hack to format time
/(\d\d:\d\d:\d\d) ...$/.exec(new Date(disp).toUTCString())[1];
if (disp > 1000) {
var elapsed = new Date().getTime() - now;
window.setTimeout(tick, 1000 - elapsed);
} else {
// stop countdown and set color to light grey
el.style.color = "#ccc";
}
}
var start = new Date().getTime() + countdown_start_in_ms;
tick();
}
Взгляните на Беритесь за руки и устанавливайте свое время. и проверьте его код. Хотя он написан с помощью Dojo, «часы» написаны на простом JavaScript. В вашем случае разница только в том, как продвигать счетчик - уменьшать, а не увеличивать.
Не использовал этот, но нашел другие плагины Кейта Вуда очень надежными.