JS倒数计时器从零停止

时间:2020-06-04 04:23:15

标签: javascript

我正在尝试让我的倒数计时器停止在零并显示完毕。由于某种原因,我无法让它在0:00停止。

var timer = 10;
var secondsRemaining;
var interval = setInterval(myTimer, 1000);

function convertSeconds(timer) {
  var min = Math.floor(timer / 60);
  var sec = timer - min * 60;

  //add a leading zero (as a string value) if seconds less than 10
  if (sec < 10) {
    sec = "0" + sec;
  }
  return min + ":" + sec;
}

//
function myTimer() {
  document.getElementById("timer").innerHTML = convertSeconds(timer);
  timer--;
  if (timer <= 0) clearInterval(interval);
}

https://codepen.io/powershell19/pen/vYNbeZy

5 个答案:

答案 0 :(得分:1)

更改以下语句:

if (timer <= 0) clearInterval(interval);

if (timer < 0) clearInterval(interval);

是您需要的吗?

答案 1 :(得分:1)

您可以尝试此操作,只需编辑if条件

var timer = 10;
var secondsRemaining;
var interval = setInterval(myTimer, 1000);

function convertSeconds(timer) {
    var min = Math.floor(timer / 60);
    var sec = timer - min * 60;

    //add a leading zero (as a string value) if seconds less than 10
    if (sec < 10) {
        sec = "0" + sec;
    }
    return min + ":" + sec;
}

//
function myTimer() {
    document.getElementById("timer").innerHTML = convertSeconds(timer);
    timer--;
    if (timer < 0) clearInterval(interval);
}

答案 2 :(得分:0)

我更改了代码的这一部分。

function myTimer() {
  document.getElementById("timer").innerHTML = convertSeconds(timer);
  timer--;
  if (timer <= 0) clearInterval(interval);
}

function myTimer() {
  document.getElementById("timer").innerHTML = convertSeconds(timer);
  if (timer-- <= 0) clearInterval(interval);
}

检查时间是否为零,它仍将执行最后的间隔0秒,然后递减。

答案 3 :(得分:0)

我知道,这里已经有很多答案了,但是也许某个人仍然对此很感兴趣。通过将以前的全局变量放入myTimer()函数的局部范围,我对代码进行了一些更改。现在,可以使用此新的myTimer()函数来启动单独的独立计时器。

“少写,多做”

myTimer('timer',10,1000);
myTimer('t2',20,600);

function myTimer(domId,time,intv){
 var trgt=document.getElementById(domId),
   timer=time,
   self=setInterval(function(){
     trgt.innerHTML=Math.floor (timer / 60)+':'+(''+timer%60).padStart(2,'0');
     if (!timer--) clearInterval(self);
   },intv);
}
<div id="timer"></div>
<div id="t2"></div>

答案 4 :(得分:-1)

尝试

var timer = 10;
var secondsRemaining;
var interval = setInterval(myTimer,1000);

function convertSeconds(timer)
{
var min = Math.floor (timer / 60);
var sec = timer - (min * 60);

//add a leading zero (as a string value) if seconds less than 10
if (sec < 10) {
        sec = "0" + sec;
    }
return min + ':' + sec;
}

//
function myTimer()                         
{
const showtimer=document.getElementById("timer")
showtimer.innerHTML = convertSeconds(timer);
timer--; 
if (timer < 0){                        
  clearInterval(interval);
  showtimer.innerHTML='Done'
}
}