我正在尝试使用以下Javascript代码启动Javascript倒计时。这里是从5到0的数字。

现在我想当它为0时,我将调用一个Ajax请求(我知道该怎么做)。但是现在,我将其警报消息设置为您的会话已结束。

它不断向我显示警报消息,但是应该只有一次!

这是JS代码:

function startTimer(duration, display) {
    var timer = duration, minutes, seconds;
    setInterval(function () {
        minutes = parseInt(timer / 60, 10)
        seconds = parseInt(timer % 60, 10);

        minutes = minutes < 10 ? "0" + minutes : minutes;
        seconds = seconds < 10 ? "0" + seconds : seconds;

        display.textContent = minutes + ":" + seconds;


        if(timer !== 0 ) {
            --timer;
        } else if( timer == 0 ) {
            alert('Your time has been completed.');
        }
    }, 1000);
}

window.onload = function () {
    var seconds = 5,
        display = document.querySelector('#time');
        startTimer(seconds, display);
};

最佳答案

您需要将间隔分配给变量,以便随后可以清除最后一个alert之后的间隔,以使其不再运行:



function startTimer(duration, display) {
  let timer = duration;
  const interval = setInterval(function() {
    let minutes = parseInt(timer / 60, 10)
    let seconds = parseInt(timer % 60, 10);
    minutes = minutes < 10 ? "0" + minutes : minutes;
    seconds = seconds < 10 ? "0" + seconds : seconds;
    display.textContent = minutes + ":" + seconds;
    if (timer !== 0) {
      --timer;
    } else if (timer == 0) {
      alert('Your time has been completed.');
      clearInterval(interval);
    }
  }, 1000);
}

window.onload = function() {
  var seconds = 5,
    display = document.querySelector('#time');
  startTimer(seconds, display);
};

<div id="time"></div>

关于javascript - Javascript开始倒计时,最后调用ajax,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49788185/

10-12 01:32
查看更多