如何解决setInterval 不能连续工作并在第一次迭代后停止
开始是01:59
。当我刷新页面时,它变成 01:58
并停止。它应该变成 01:59
,然后是 01:58
,然后是 01:57
等等。
function timer() {
let time = 119,minutes = Math.floor(time / 60),seconds = time % 60;
if (minutes < 10) {
minutes = `0${minutes}`;
}
else if (seconds < 10) {
seconds = `0${seconds}`;
}
if (seconds > 0) {
seconds = seconds - 1;
}
else {
clearInterval(SI);
}
document.getElementById('div').innerHTML = `${minutes}:${seconds}`;
}
let SI = setInterval(() => {
timer();
},1000);
<div id="div"></div>
解决方法
您在每次 time
迭代时都在休息 time()
变量。
将初始化移到函数外。
此外,您忘记在函数调用 time
后从 time--
变量中删除 1 秒;
function timer() {
let minutes = Math.floor(time / 60),seconds = time % 60;
if (minutes < 10) {
minutes = `0${minutes}`;
}
else if (seconds < 10) {
seconds = `0${seconds}`;
}
if (seconds > 0) {
time--;
}
else {
clearInterval(SI);
}
document.getElementById('div').innerHTML = `${minutes}:${seconds}`;
}
let time = 119;
let SI = setInterval(() => {
timer();
},1000);
<div id="div"></div>
解决了!即使我不知道没有代码的分钟是如何运行的 O.o
let time=123;
function timer(){
let minutes=Math.floor(time/60),seconds=time%60;
/*if(minutes<10){
minutes=`0${minutes}`;
}if(seconds<10){
seconds=`0${seconds}`;
}*/
if(time>0){
time=time-1;
}
document.getElementById("div").innerHTML=`${minutes}:${seconds}`;
}
setInterval(()=>{
timer();
},1000);
<div id="div"></div>
,
定时器组件的脚本应该是 setInterval(timer,1000)
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。