Leondr
@Leondr

Как присвоить значения переменным таймера (timer js)?

Всем доброго времени суток.
Подскажите как в данном таймере задать конкретные значения переменных
codepen.io/anon/pen/WQVyRL

Имеется ввиду:

var day
var hour
var min
var sec

Что бы можно было например присвоить переменной day значение 1 и таймер начинал отсчет вида 1д 23ч 59мин 59сек и так до 0

Или присвоить переменной min значение равное 5 и таймер начинал обратный отсчет с 5 минут

var day = 0
var hour = 0
var min = 4
var sec =59
  • Вопрос задан
  • 295 просмотров
Решения вопроса 1
skamenetskiy
@skamenetskiy
Full stack developer
А почему не заменить вот тут на дату/время которое вам нужно?
// Строка 33
var tl = new Date('2020/01/01 00:00:00');

Ну или собрать объект Date из переменных day, our, min, esc?

Второй вариант решения:
(function(day, hour, min, sec, callbackInterval, callbackEnd) {
    var resultInSeconds = ((new Date).getTime() / 1000) + ((day * 24 * 60 * 60) + (hour * 60 * 60) + (min * 60) + sec),
        dhm = function(t) {
            var cd = 24 * 60 * 60 * 1000,
                ch = 60 * 60 * 1000,
                d = Math.floor(t / cd),
                h = Math.floor((t - d * cd) / ch),
                m = Math.floor((t - d * cd - h * ch) / 60000),
                s = Math.round((t - d * cd - h * ch - m * 60000) / 1000);
            if (m === 60) {
                h++;
                m = 0;
            }
            if (h === 24) {
                d++;
                h = 0;
            }
            return [d, h, m, s];
        },
        interval = setInterval(function() {
            var now = (new Date()).getTime() / 1000;
            if (now >= resultInSeconds) {
                callbackEnd.call(window);
                clearInterval(interval);
                return;
            }
            callbackInterval.apply(window, dhm((resultInSeconds - now) * 1000));
        }, 1000);
})(
	1, // дни
	2, // часы
	3, // минуты
	40, // секунды
	// вызывается каждую секунду
	function(days, hours, minutes, seconds) {
	   console.log(arguments);
	},
	// вызывается в конце
	function() {
	   console.log('Время вышло!');
	}
);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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