Создайте таймер, который сбрасывается через 24 часа, но не перезапускается после перезагрузки страницы
Я создаю веб-приложение и пытаюсь создать таймер обратного отсчета для определенного продукта, на который действует скидка, и мне интересно, есть ли способ не сбрасывать таймер после обновления страницы, а когда он достигнет 0, подождать 24 часа и затем автоматически сбросить его. Вот изображение таймера ниже:
Вот код таймера:
var count = 420;
var counter = setInterval(timer, 1000);
function timer() {
count = count - 1;
if (count == -1) {
clearInterval(counter);
return;
}
var seconds = count % 60;
var minutes = Math.floor(count / 60);
minutes %= 60;
document.getElementById("timer").innerHTML = (minutes).toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}) + ":" + (seconds).toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}); // watch for spelling
document.getElementById("timer2").innerHTML = (minutes).toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}) + ":" + (seconds).toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}); // watch for spelling
}
Это не лучший вариант, но когда пользователь впервые попадает на страницу, создайте таймер с новым обратным отсчетом и сохраните значение счетчика в локальном хранилище, а также обновляйте его каждую секунду в хранилище. И когда пользователь придет в следующий раз, вы можете проверить, есть ли у вас уже счетчик в хранилище, и использовать это значение счетчика для создания таймера. Вот документация по использованию localStorage - https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage
Вы можете использовать localStorage для сохранения значения при всех загрузках страницы. Когда речь идет о таймере, имеет смысл сохранять время, в которое он был запущен. Таким образом, когда посетитель вернется, ваш код сможет точно сказать, сколько времени на нем осталось.
// Get the time stamp (in milliseconds) that the timer started
var timerStart = window.localStorage.getItem('timerStart')
if (!timerStart){
// If a timer was never started, start one
timerStart = new Date().getTime()
window.localStorage.setItem('timerStart', timerStart)
}
// Update the timer every 1/10th of a second
setInterval(timer, 100);
function timer() {
// Use the start time to computer the number of
// seconds left on the timer
var count = 7 * 60 - Math.round((new Date().getTime() - timerStart) / 1000)
if (count < 0) {
clearInterval(timer);
return;
}
var seconds = count % 60;
var minutes = Math.floor(count / 60);
minutes %= 60;
document.getElementById("timer").innerHTML = (minutes).toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}) + ":" + (seconds).toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false});
}
