gpt4 book ai didi

Javascript 停止倒计时

转载 作者:行者123 更新时间:2023-12-04 16:21:16 25 4
gpt4 key购买 nike

我在 js 中有一个倒计时,但我无法添加我想要的技巧。

当计数结束时,它并没有停止。负数开始,相反,我希望它在时间到期后停止在 0。我该怎么办?

  var counter = null;

window.onload = function() {
initCounter();
};

function initCounter() {
// get count from localStorage, or set to initial value of 1000
count = getLocalStorage('count') || 1000;
counter = setInterval(timer, 1000); //1000 will run it every 1 second
}

function setLocalStorage(key, val) {
if (window.localStorage) {
window.localStorage.setItem(key, val);
}

return val;
}

function getLocalStorage(key) {
return window.localStorage ? window.localStorage.getItem(key) : '';
}

function timer() {
count = setLocalStorage('count', count - 1);
if (count == -1) {
clearInterval(counter);
return;
}

var seconds = count % 60;
var minutes = Math.floor(count / 60);
var hours = Math.floor(minutes / 60);
minutes %= 60;
hours %= 60;

document.getElementById("countdown").innerHTML = hours + " ore " + minutes + " min " + seconds + " sec";
}

最佳答案

问题是您将 count-1 值放入 LocalStorage 中。

count = setLocalStorage('count', count - 1);

在页面重新加载后,您一直从 -1 中减去 1,得到 -2,您的条件 count == -1 无法捕获。解决方案是在检查是否需要继续计时器后,将下一个计数值放入 LocalStorage

<script type="text/javascript">

let count = 0;
let counter = null;

window.onload = function() {
initCounter();
};

function initCounter() {
// get count from localStorage, or set to initial value of 1000
count = Number(getLocalStorage('count')) || 5;
counter = setInterval(timer, 1000); //1000 will run it every 1 second
}

function setLocalStorage(key, val) {
if (window.localStorage) {
window.localStorage.setItem(key, val);
}

return val;
}

function getLocalStorage(key) {
return window.localStorage ? window.localStorage.getItem(key) : '';
}

function timer() {
const nextCount = count - 1
if (nextCount < 0) {
clearInterval(counter);
return;
}
count = setLocalStorage('count', nextCount);

const seconds = count % 60;
let minutes = Math.floor(count / 60);
let hours = Math.floor(minutes / 60);
minutes %= 60;
hours %= 60;

document.getElementById("timer").innerHTML = hours + " ore " + minutes + " min " + seconds + " sec";
}
</script>

<div id="timer"></div>

希望对您有所帮助:)

关于Javascript 停止倒计时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60361797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com