Javascript设置间隔不重复

Javascript设置间隔不重复,javascript,jquery,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(); isS

我需要在
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次


为什么会发生这种情况?

您的问题在于这一行:

    duration = 60 * document.getElementById('start').innerHTML;
如果添加
console.log(持续时间)在该行下方,您将看到持续时间为
NaN
。而且,由于
NaN>
不会计算为true,因此如果从未输入
正文,则您的
。
将其转换为整数首先解决问题:

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

您在控制台中看到任何错误吗?60*文档。。。。也许您想使用parseInt()我只需要单击一次就可以调用一个函数。当我调用onload时,它工作正常,但页面已刷新,计时器正在重新启动。这项工作对您有帮助吗?谢谢,当我在onload上调用函数start1()时,我尝试了它,但仍然没有重复,它工作得很好。为什么不使用onclick调用呢?我不知道请注意,
*
操作符将其操作数转换为数字,因此
60*“12”
提供了
720
,而无需使用
parseInt()
(如演示中的更新:)。@nnnnnn我认为js应该能够自行转换。我仍然认为解析整数可能被认为是更好的风格。但你是对的。行动计划的问题一定在别的地方。。。