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应该能够自行转换。我仍然认为解析整数可能被认为是更好的风格。但你是对的。行动计划的问题一定在别的地方。。。