我正在使用带有“停止/开始”按钮的计时器功能(主要来自此处接受的答案:javascript countdown timer with start & stop buttons)。该按钮触发一个ajax请求,并且计时器停止/启动发生在回调函数中。该功能一直有效,直到我在页面加载时启动计时器为止,在这种情况下,开始/停止按钮无效。
我尝试了不使用window.onload的功能,并且效果很好。
window.onload = timer;
// Counter
var createDate = parseInt(document.getElementById("create-date").innerHTML) * 1000;
var delay = parseInt(<?= Yii::$app->params['delay.update'] ?>) * 1000;
var countDownTime = createDate + delay;
var setTimer;
function timer() {
setTimer = setInterval(calcTime, 500);
function calcTime() {
var now = new Date().getTime();
var distance = countDownTime - now;
var min = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
var sec = Math.floor((distance % (1000 * 60)) / 1000);
document.getElementById("timer").innerHTML = min + ":" + ("0" + sec).slice(-2);
if (distance < 0) {
clearInterval(setTimer);
document.getElementById("timer").innerHTML = "In queue...";
document.getElementById("pause-link").outerHTML = "";
}
}
}
完成数据回叫:
'pauseDone': function (response) {
if (response.pause == 1) {
clearInterval(setTimer);
document.getElementById("timer").innerHTML = "paused";
} else {
timer();
}
document.getElementById("pause-link").innerHTML = response.link;
},
我希望计时器倒计时页面加载。但是当我调用window.onload时,该函数不再响应回调函数。
编辑:如果页面以未暂停状态加载,则开始/停止按钮将起作用。由于某些原因,在暂停状态下加载时不起作用。在暂停状态下加载将导致timer()被调用两次(一次在pageLoad上,一次在单击“开始”时单击),此后clearInterval(setTimer)无效。