因此,我试图在不使用API的情况下制作番茄钟计时器(我知道,这是一个愚蠢的选择),但我觉得好像我过度复杂化了这个问题。
我分叉了我的CodePen,所以我可以在这里发布当前代码,而不会让任何人感到困惑。 My Code Pen
要查看我的问题:只需将Timer设置为.1并将Break设置为.1 - 您将看到Start to Resume正常工作,但Resume to start存在问题。
我内置了consoleLogs来跟踪它,我看到工作计时器TRIES开始但是breakTimer会过度运行它,并且每次传递都会重复。
为什么我的clearInterval没有工作?
我尝试过的事情: 调整clearInterval的名称, 设置它使它返回到startTimer而不是start 强制退出(而不是将其循环回startInterval。
该函数与我的startFunction几乎完全相同,但无法正常工作。非常感谢任何输入(我是clearInterval的新手,但我相信我正在使用它。)
function breakTimer() {
$('.jumbotron').css('visibility', 'visible');
setInterval(function() {
console.log("Break Timer...");
breakTime--;
if (breakTime < 0) {
clearInterval(timer);
working = false;
start();
} else {
showTime(breakTime);
}
}, 1000);
}
修改:
回答回复:
function start() {
if (working == true){ //This keeps it from being spammable
return;
} //Else
workTime = $('#work').val()*60;
breakTime = $('#break').val()*60;
working = true;
checkStatus();
timer = startTimer();
}
不确定我是否应该发布每个功能
答案 0 :(得分:0)
根据定义,setInterval(...)
返回的值是创建的计时器的ID。因此,使用您的代码,您只能停止上次创建的计时器,因为timer
变量中的ID会被覆盖,导致它失去对先前创建的(并且仍在运行的)计时器的控制。
ID是您传递给clearInterval(...)
以停止计时器的ID。你必须以不同的方式做到这一点。您可以在https://codereview.stackexchange.com/