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

Почему не сбрасывается таймер в js?

Делаю обратный отсчет, столкнулся с магией, при обновлении страницы таймер почему то не сбрасывается
начинаю гуглить у всех проблема ровно на оборот - в чем дело? как сделать что бы после обновления страницы таймер начинался по новой?
var now = new Date(),
                                times = [
                                    0 - now.getHours(),
                                    25 - now.getMinutes(),
                                    59 - now.getSeconds(),
                                ],
                                mBox = document.getElementById('minutes'),
                                sBox = document.getElementById('seconds');
                            clearInterval(times)
                            timer_live(times);

                            function timer_live(times) {
                                var tm = setInterval(function () {
                                    var hour = times[0],
                                        min = times[1],
                                        sec = times[2];

                                    times[2]--;

                                    if (times[0] == 0 && times[1] == 0 && times[2] == 0) {
                                        clearInterval(tm);
                                    } else if (times[2] == -1) {
                                        times[1]--;
                                        times[2] = 59;
                                    } else if (times[1] == -1) {
                                        times[0]--;
                                        times[1] = 59;
                                    }

                                    var hour = (times[0] < 10) ? '0' + times[0] : times[0],
                                        min = (times[1] < 10) ? '0' + times[1] : times[1],
                                        sec = (times[2] < 10) ? '0' + times[2] : times[2];

                                    showTimer(hour, min, sec);
                                }, 1000);
                            };

                            function showTimer(hour, min, sec) {
                                mBox.innerHTML = min;
                                sBox.innerHTML = sec;
                            }
  • Вопрос задан
  • 333 просмотра
Подписаться 2 Простой Комментировать
Решения вопроса 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
У вас clearInterval(times) не приведёт к обнулению таймера, потому что в качестве аргумента нужно указывать не массив чисел times, а результат tm, возвращённый функцией tm = setInterval(...);.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Athanor
@Athanor
Лайк + Решение: не жмись, нажми
Вероятно потому что начальное значение таймера у вас завязано на текущее время

var now = new Date(),
                                times = [
                                    0 - now.getHours(),
                                    25 - now.getMinutes(),
                                    59 - now.getSeconds(),
                                ],


UPDATE

кроме того, строка clearInterval(times) работает не так, как вы, вероятно этого ожидаете. Она нужна, чтоб отменить запуск интервального таймера. Принимает на вход id этого таймера, вы же туда передаете массив с значением таймера.
Ответ написан
Ваш ответ на вопрос

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

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