【发布时间】:2021-11-17 21:09:45
【问题描述】:
我下载了一个网站模板,一切似乎都正常。我唯一的问题是我的计时器在重新加载页面时总是会重新启动。我能做些什么来防止它?我看到了一些关于节省存储时间的东西,但我的编码知识非常少。提前感谢您的帮助。
(我不想更改布局和 css,所以我只上传了 main.js 计时器部分和我的 html 文件中的特定位置。我的问题仍然有太多代码,所以我需要添加更多细节。我'我只是写一些额外的东西请忽略)。
const countDownClock = (number = 100, format = 'seconds') => {
const d = document;
const daysElement = d.querySelector('.days');
const hoursElement = d.querySelector('.hours');
const minutesElement = d.querySelector('.minutes');
const secondsElement = d.querySelector('.seconds');
let countdown;
convertFormat(format);
function convertFormat(format) {
switch (format) {
case 'seconds':
return timer(number);
case 'minutes':
return timer(number * 60);
case 'hours':
return timer(number * 60 * 60);
case 'days':
return timer(number * 60 * 60 * 24);
}
}
function timer(seconds) {
const now = Date.now(`November 17 00:00:00`);
const then = now + seconds * 1000;
countdown = setInterval(() => {
const secondsLeft = Math.round((then - Date.now()) / 1000);
if (secondsLeft <= 0) {
setInterval(countdown);
return;
};
displayTimeLeft(secondsLeft);
}, 1000);
}
function displayTimeLeft(seconds) {
daysElement.textContent = Math.floor(seconds / 86400);
hoursElement.textContent = Math.floor((seconds % 86400) / 3600);
minutesElement.textContent = Math.floor((seconds % 86400) % 3600 / 60);
secondsElement.textContent = seconds % 60 < 10 ? `0${seconds % 60}` : seconds % 60;
}
}
/*
start countdown
enter number and format
days, hours, minutes or seconds
*/
countDownClock(15, 'days');
<div id="countdown" class="countdown">
<ul id="countdown-example">
<li>
<span class="days"></span>
<p class="days_text">DAYS</p>
</li>
<li>
<span class="hours"></span>
<p class="hours_text">HOURS</p>
</li>
<li>
<span class="minutes"></span>
<p class="minutes_text">MINS</p>
</li>
<li>
<span class="seconds"></span>
<p class="seconds_text">SECS</p>
</li>
</ul>
</div>
【问题讨论】:
-
localStorage 的文档可以帮助您,请参阅
setItem和getItem:developer.mozilla.org/en-US/docs/Web/API/Window/localStorage 每次更新时使用 setItem 存储当前时间,然后每次加载页面时,使用 getItem 获取时间
标签: javascript html countdowntimer