Javascript 单击按钮后清除超时
我目前正在尝试编写类似于tamagotchi“护理错误”的代码 在本例中,我试图创建一个函数来检查对象的饥饿状态是否高于或等于10。一旦发生这种情况,计时器将启动,如果10秒后计时器保持在10以上,将被记录为“错误” 但是,如果用户执行另一个操作,将饥饿感降低到10以下,它将清除计时器 尽管尝试了下面的代码,但我现在无法正确清除计时器Javascript 单击按钮后清除超时,javascript,function,timeout,Javascript,Function,Timeout,我目前正在尝试编写类似于tamagotchi“护理错误”的代码 在本例中,我试图创建一个函数来检查对象的饥饿状态是否高于或等于10。一旦发生这种情况,计时器将启动,如果10秒后计时器保持在10以上,将被记录为“错误” 但是,如果用户执行另一个操作,将饥饿感降低到10以下,它将清除计时器 尽管尝试了下面的代码,但我现在无法正确清除计时器 var changeHungerMood = setInterval(mistakeCheck, 5000); function mistakeCheck()
var changeHungerMood = setInterval(mistakeCheck, 5000);
function mistakeCheck() {
var mistakeTimer
function addMistake() {
stats.mistakes += 1;
}
if (stats.hunger >= 10) {
var mistakeTimer = setTimeout(addMistake, 10000);
} else {
clearTimeout(mistakeTimer);
console.log("Mistake Cleared!");
}
}
minmaxHunger("hunger", 10, 0);
目前,即使检查后饥饿感下降到10以下,计时器也不会被清除,并且仍然被记录为错误。有人能帮忙吗?谢谢。您应该澄清在每种情况下需要完成的任务。 非常迫切地,您需要:
stats.hunger>=10
时设置计时器,您做得很好(除了您用var
声明了两次mistakeTimer
,跳过第二次var
)addmission
是否仍然10
或更多,而不是调用addmission
,如果是这样,请调用addmission
函数addMistakeIfNeeded
,该函数执行检查并在需要时调用addmission
。您的计时器应该调用这个addMistakeIfNeeded
函数,而不是addmission
而且@Jonas是对的,你需要把
addmission
和addMistakeIfNeeded
从mistakeCheck
函数中去掉。你应该澄清在每种情况下你需要完成什么。
非常迫切地,您需要:
stats.hunger>=10
时设置计时器,您做得很好(除了您用var
声明了两次mistakeTimer
,跳过第二次var
)addmission
是否仍然10
或更多,而不是调用addmission
,如果是这样,请调用addmission
函数addMistakeIfNeeded
,该函数执行检查并在需要时调用addmission
。您的计时器应该调用这个addMistakeIfNeeded
函数,而不是addmission
而且@Jonas是对的,您需要将
addmission
和addMistakeIfNeeded
从mistakeCheck
函数中删除。每次调用mistakeCheck时,您都要重新定义mistakeTimer。我相信这就是你的问题所在。因此,当您运行clearTimeout(mistakeTimer)时,它与启动倒计时的计时器不同。每次调用mistakeCheck时,您都在重新定义mistakeTimer。我相信这就是你的问题所在。因此,当您运行clearTimeout(mistakeTimer)时,它与启动倒计时的计时器不同。