重复计时器无限次

问题描述 投票:0回答:2

我正在尝试使用 Google Optimize 在我的 Shopify 结账中添加倒计时器。我使用以下 HMTL 和 JS 让它工作。摘自这里

但是,一旦计时器结束并且我重新加载页面,它就会从 17 秒而不是 5 分钟开始。

有没有办法让它在达到 0 后从 5 分钟开始重复计时器?

document.getElementById('timer').innerHTML =
  05 + ":" + 00;
startTimer();


function startTimer() {
  var presentTime = document.getElementById('timer').innerHTML;
  var timeArray = presentTime.split(/[:]+/);
  var m = timeArray[0];
  var s = checkSecond((timeArray[1] - 1));
  if(s==59){m=m-1}
  if(m<0){
    return
  }

  document.getElementById('timer').innerHTML =
    m + ":" + s;
  console.log(m)
  setTimeout(startTimer, 1000);

}

function checkSecond(sec) {
  if (sec < 10 && sec >= 0) {sec = "0" + sec}; // add zero in front of numbers < 10
  if (sec < 0) {sec = "59"};
  return sec;
}
<div>Your cart is reserved for <span id="timer"></span></div>

如果您能像与完全的初学者交谈一样给出答案,我们将不胜感激。

看来我要学的东西还有很多!

javascript shopify
2个回答
0
投票
//JAVASCRIPT
startTimer(5); // SPECIFY AMOUNT OF MINUTES OR NO PARAMETER FOR DEFAULT 5

function startTimer(minutes = 5){
  var timeout = minutes * 60000;
  var ms = timeout;
  var interval = setInterval(function(){
    ms -= 1000;
    if(ms >= 0) {
      var d = new Date(1000*Math.round(ms/1000)); 
      document.getElementById('timer').innerHTML = getMS(d);
    } else {
      startTimer(5); // MAKE TIMER RESTART AGAIN FOR 5 MINS
      // clearInterval(interval); // TO MAKE TIMER STOP UPON REACHING 0:00
    }
  }, 1000);
}

function getMS(d){
  return pad(d.getUTCMinutes()) + ':' + pad(d.getUTCSeconds());
}

function pad(i) { 
  return ('0'+i).slice(-2); 
}
<!--HTML -->
<body>
<div>Your cart is reserved for <span id="timer"></span></div>
</body>

-1
投票

在 javascript 中,setInterval 函数允许您在每个固定的毫秒内做任何您想要的事情。

interval = setInterval(() => {
              console.log('Waited for 5m');
              // Do whatever you want
              console.log('Waiting for 5m again...');
           }, 300000);

// To stop the interval
clearInterval(interval);
© www.soinside.com 2019 - 2024. All rights reserved.