Javascript停止倒计时
我有一个倒计时在js,我不能添加一个技巧,我想 当计数结束时,它不会停止。负数开始,而不是我希望它停止在0一旦时间已经到期。我该怎么办Javascript停止倒计时,javascript,countdown,Javascript,Countdown,我有一个倒计时在js,我不能添加一个技巧,我想 当计数结束时,它不会停止。负数开始,而不是我希望它停止在0一旦时间已经到期。我该怎么办 var counter = null; window.onload = function() { initCounter(); }; function initCounter() { // get count from localStorage, or set to initial value of 1000 coun
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";
}
更改此项:
if (count == -1) {
clearInterval(counter);
return;
}
为此:
if (count < 0) {
clearInterval(counter);
localStorage.removeItem('count');
return;
}
if(计数<0){
清除间隔(计数器);
localStorage.removietem('count');
返回;
}
总是尽可能地严格你的条件,或者。实际上,您并不关心它是否等于-1
。您关心它在0
以下
在您的原始代码中,当页面在没有本地存储的情况下加载时,它会正常停止。但最后,您将localStorage设置为
-1
。刷新时,将其设置为-2
(计数-1
)并启动计数器进入负片。从未根据存储的-1
值检查您的状况。问题是您将计数
与-1
值一起放入本地存储中
count = setLocalStorage('count', count - 1);
重新加载页面后,您不断从-1
中减去1
,得到-2
,而您的条件计数==-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>
让计数=0;
设计数器=null;
window.onload=函数(){
initCounter();
};
函数initCounter(){
//从localStorage获取计数,或设置为初始值1000
count=Number(getLocalStorage('count'))| | 5;
计数器=设置间隔(计时器,1000);//1000将每1秒运行一次
}
函数setLocalStorage(键,val){
if(window.localStorage){
window.localStorage.setItem(key,val);
}
返回val;
}
函数getLocalStorage(键){
return window.localStorage?window.localStorage.getItem(键):“”;
}
函数计时器(){
const nextCount=count-1
如果(下一个计数<0){
清除间隔(计数器);
返回;
}
count=setLocalStorage('count',nextCount);
常数秒=计数%60;
让分钟=数学楼层(计数/60);
让小时数=数学楼层(分钟/60);
分钟%=60;
小时%=60;
document.getElementById(“计时器”).innerHTML=hours+“ore”+minutes+“min”+seconds+“sec”;
}
希望能有所帮助:)是否实际执行了clearInterval
?您是否尝试过检查count<0
而不是count==-1
?这可能是浮点值的舍入错误不客气,请不要忘记向上投票&如果答案对您有帮助,请接受:)