Javascript setInterval不重复

时间:2014-11-30 11:23:01

标签: javascript jquery

我需要在onClick事件上调用一个函数。

var startTime;
var isStarted = false;
var duration;
var loopCount;
var showWarn01 = false;
var showWarn02 = false;
var btn;

//在变量

之上
function start1() {

    if (!isStarted) {
        startTime = new Date().getTime();
        isStarted = true;

    }

如果它开始

    if (isStarted) {

        duration = 60 * document.getElementById('start').innerHTML;
        loopCount = window.setInterval(function () {
            var leftSeconds = duration - Math.round((new Date().getTime() - startTime) / 1000);

            if (leftSeconds >= 0) {
                var hour = padLeft(Math.floor(leftSeconds / 3600) + '');
                leftSeconds -= hour * 3600;
                var minute = padLeft(Math.floor(leftSeconds / 60) + '');
                leftSeconds -= minute * 60;
                var second = padLeft(leftSeconds + '');
                document.getElementById('showTime').innerHTML = hour + ':' + minute + ':' + second;
            } else {
                window.clearInterval(loopCount);
                confirmButtonDirect.jq.click();

            }
        }, 1000);
    }
}

setInterval不重复,只有一次

为什么会这样?

1 个答案:

答案 0 :(得分:0)

你的问题在于这一行:

    duration = 60 * document.getElementById('start').innerHTML;

如果您在该行下方添加console.log(duration);,则会看到持续时间为NaN。由于NaN > <any number>未评估为真,因此永远不会输入if正文。 首先将它转换为整数可以解决问题:

    duration = 60 * parseInt(document.getElementById('start').innerHTML);