Я не js-разработчик, скорее графический дизайнер, подражатель разработчику, я создаю веб-сайт для друга, и мне нужно сбросить обратный отсчет после того, как он достигнет крайнего срока.
Я получил этот код от Мэтта Смита на Codepen, и он работает очень хорошо (вы можете посмотреть https://m13m.webflow.io/), но, к сожалению, таймер становится отрицательным, и я хочу, чтобы он повторился.
Как я мог это сделать?
Большое спасибо!
<script>
// Original Pen by Matt Smith
const second = 1000,
minute = second * 60,
hour = minute * 60,
day = hour * 24;
let countDown = new Date('Mar 19, 2022 22:28:00').getTime(),
x = setInterval(function() {
let now = new Date().getTime(),
distance = countDown - now;
document.getElementById('days').innerText = Math.floor(distance / (day)),
document.getElementById('hours').innerText = Math.floor((distance % (day)) / (hour)),
document.getElementById('minutes').innerText = Math.floor((distance % (hour)) / (minute)),
document.getElementById('seconds').innerText = Math.floor((distance % (minute)) / second);
//do something later when date is reached
//if (distance < 0) {
// clearInterval(x);
// 'IT'S MY BIRTHDAY!;
//}
}, second)
</script>
Ваш код выглядит хорошо. Вы должны проверить, меньше ли расстояние до 0, затем очистить таймер и распечатать текст BDay.
// Original Pen by Matt Smith
const second = 1000,
minute = second * 60,
hour = minute * 60,
day = hour * 24;
let countDown = new Date('Mar 19, 2022 22:28:00').getTime();
let x = setInterval(function() {
let now = new Date().getTime();
let distance = countDown - now;
if (distance < 0) {
document.getElementById('msg').innerHTML = "HAPPY BDAY"
clearInterval(x);
return false;
}
document.getElementById('days').innerText = Math.floor(distance / (day));
document.getElementById('hours').innerText = Math.floor((distance % (day)) / (hour));
document.getElementById('minutes').innerText = Math.floor((distance % (hour)) / (minute));
document.getElementById('seconds').innerText = Math.floor((distance % (minute)) / second);
}, second)
<div id = "days"></div>
<div id = "hours"></div>
<div id = "minutes"></div>
<div id = "seconds"></div>
<div id = "msg"></div>
// Original Pen by Matt Smith
const second = 1000,
minute = second * 60,
hour = minute * 60,
day = hour * 24;
let round = 1;
const diff = 1; // set timediff in minutes
//let countDown = new Date('Mar 19, 2022 22:28:00').getTime();
let countDown = new Date(new Date().getTime() + diff*60000);
let x = setInterval(function() {
let now = new Date().getTime();
let distance = countDown - now;
if (distance < 0) {
countDown = new Date(new Date().getTime() + diff*60000);
document.getElementById('msg').innerHTML = "HAPPY BDAY" + ' Round => ' + (round++)
}
document.getElementById('days').innerText = Math.floor(distance / (day));
document.getElementById('hours').innerText = Math.floor((distance % (day)) / (hour));
document.getElementById('minutes').innerText = Math.floor((distance % (hour)) / (minute));
document.getElementById('seconds').innerText = Math.floor((distance % (minute)) / second);
}, second)
<div id = "days"></div>
<div id = "hours"></div>
<div id = "minutes"></div>
<div id = "seconds"></div>
<div id = "msg"></div>
@AlexandruConstantin Я обновил свой ответ! Теперь будет (повторить / начать снова) после завершения обратного отсчета. Таймер составляет 1 минуту, и вы можете установить таймер, если установите переменную diff
в коде.
@AlexandruConstantin Спасибо за отзыв! Пожалуйста. Если вы обнаружили, что мой ответ был полезен, было бы неплохо, если бы вы могли принять ответ. Если вы нашли, что это было хорошо, вы также можете проголосовать :-) Спасибо!
Есть ли способ сбросить его каждые 3 часа, сохраняя обратный отсчет при обновлении страницы (например, если пользователь открывает страницу в 2:59:00 и обновляет ее до 2 минут, обратный отсчет должен показывать 2:57). :00)? Большое спасибо за помощь до сих пор!
Извините, я забыл удалить этот комментарий оттуда. Я не хочу, чтобы он показывал сообщение, я хочу, чтобы обратный отсчет повторялся, когда он достигает 0.