window.onload加载的计时器功能没有响应

时间:2019-06-26 18:05:28

标签: javascript

我正在使用带有“停止/开始”按钮的计时器功能(主要来自此处接受的答案: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)无效。

0 个答案:

没有答案