我试图实现一个波多罗时钟,在深入研究真正的代码之前,我正在使用window.setInterval()
和它的对应的window.clearInterval
。我面临的问题是我无法让window.clearInterval()
为我工作。请看我的代码,并指导我如何使它工作。谢谢
var startTime = 11;
var intervalID;
function downCounter() {
startTime--;
$('h2').text(startTime);
}
if (startTime > 0)
intervalID = setInterval(downCounter, 1000);
else
clearInterval(intervalID);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<h2></h2>
发布于 2015-09-10 13:17:15
这里的else
:
if (startTime > 0)
intervalID = setInterval(downCounter, 1000);
else
clearInterval(intervalID);
永远不会跑。
当您知道startTime
是> 0
时,在计时器启动之前,这个块只运行一次。
检查处理程序中的startTime
,并在它走得太远时清除那里的间隔:
var startTime = 11;
var intervalID;
function downCounter() {
startTime--;
$('h2').text(startTime);
if (startTime <= 0)
clearInterval(intervalID);
}
intervalID = setInterval(downCounter, 1000);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<h2></h2>
发布于 2015-09-10 13:16:13
在您的代码中,只在第一次检查if (startTime > 0)
。试着这样做:
$(document).ready(function() {
var startTime = 11;
var intervalID;
function downCounter() {
startTime--;
$('h2').text(startTime);
if (startTime <= 0){
clearInterval(intervalID);
}
}
intervalID = setInterval(downCounter, 1000);
});
发布于 2015-09-10 13:18:43
应该在clearInterval函数中调用downCounter:
function downCounter() {
startTime--;
$('h2').text(startTime);
if (startTime <= 0 ) {
clearInterval(intervalID);
}
}
https://stackoverflow.com/questions/32502884
复制相似问题