Обратный отсчет от x до 0 в Javascript?

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

Как бы Вы это сделали? Если у меня нет другого предложения, я попробую свой путь, но мне любопытно узнать, есть ли у него более безопасный способ сделать это.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
236
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Вы знаете jQuery Framework? Это фреймворк Javascript, в котором есть множество утилит, методов и функций, которые упрощают работу с Javascript.

Вот плагин обратного отсчета (не тестировал).

Я предлагаю вам скачать JQuery, чем скачать плагин. Посмотрите образец кода из «относительной» вкладки на сайте. У вас может быть что-то вроде:

 $('#until2d4h').countdown({until: '+12M +54S'});

* Единственный недостаток того, что я предлагаю вам, это то, что вам потребуется добавить 2 .js. Старайтесь добавлять их только тогда, когда это необходимо, и вас обязательно найдут.

Не использовал этот, но нашел другие плагины Кейта Вуда очень надежными.

seanb 17.12.2008 01:37

Хороший, но я не хочу использовать все эти файлы .js.

SexyBunny 18.12.2008 01:12

Этот вкус вам не понравится, но он вам пойдет на пользу:

Погуглите по запросу "таймер javascript" и прочтите различные примеры и учебные пособия, найденные в результате этого поиска.

Вы узнаете гораздо больше, чем просто написать таймер обратного отсчета. :-)

Удачи!

Ответ принят как подходящий

Общий алгоритм:

  1. Считайте время с сервера.
  2. Прочтите текущее время.
  3. Вызов функции.
  4. В вашей функции прочтите текущее время, получите дельту от начального времени, которое вы прочитали на шаге 2.
  5. Вычтите дельту из начального времени, которое вы считали с сервера на шаге 1, и отобразите остаток.
  6. Функция должна вызвать 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. В вашем случае разница только в том, как продвигать счетчик - уменьшать, а не увеличивать.

Другие вопросы по теме