JS倒数计时器停止在0

时间:2020-07-09 04:33:30

标签: javascript

我有这个脚本。我需要将其停在0。

function count() {

  var startTime = document.getElementById('hms').innerHTML;
  var pieces = startTime.split(":");
  var time = new Date();
  time.setHours(pieces[0]);
  time.setMinutes(pieces[1]);
  time.setSeconds(pieces[2]);
  var timedif = new Date(time.valueOf() - 1000);
  var newtime = timedif.toTimeString().split(" ")[0];
  document.getElementById('hms').innerHTML = newtime;
  setTimeout(count, 1000);
}
count();
<div id='hms'>00:00:05</div>

2 个答案:

答案 0 :(得分:2)

当时间字符串为“ 00:00:00”时停止:

function count() {
  var startTime = document.getElementById('hms').innerHTML;

  // exit function immediately
  if(startTime==='00:00:00') return;

  var pieces = startTime.split(":");
  var time = new Date();
  time.setHours(pieces[0]);
  time.setMinutes(pieces[1]);
  time.setSeconds(pieces[2]);
  
  var timedif = new Date(time.valueOf() - 1000);
  var newtime = timedif.toTimeString().split(" ")[0];
  document.getElementById('hms').innerHTML = newtime;
  setTimeout(count, 1000);
}
count();
<div id="hms">00:00:05</div>

答案 1 :(得分:0)

您需要添加的有效条件。

您可以尝试pieces.some((value) => Number(value) > 0)

以下是示例代码:

请注意,我可以自由地重命名变量以使其更具可读性。

function countDown() {
  const container = document.getElementById('hms');
  var startTime = container.innerHTML.trim();
  var [hours, minutes, seconds] = startTime.split(":");
  if ([hours, minutes, seconds].some((value) => Number(value))) {
    var time = new Date();
    time.setHours(hours);
    time.setMinutes(minutes);
    time.setSeconds(seconds);
    var timedif = new Date(time.valueOf() - 1000);
    var newtime = timedif.toTimeString().split(" ")[0];
    container.innerHTML = newtime;
    setTimeout(countDown, 1000);
  } else {
    console.log('Ending countdown...')
  }
}
countDown();
<div id='hms'>00:00:05</div>