我正在尝试在javascript中重置计时器,但拒绝工作,它只是启动另一个功能而不停止前一个。
time = ((A[Qused].length)*5000) + 10000
refresh = window.setTimeout(function(){timeup(tc,chosen);}, time);
window.clearTimeout(refresh)
refresh = window.setTimeout(function(){timeup(tc,chosen);}, time);
此代码直接来自应用程序,正如我解释的那样,它不会停止提示,但它会启动另一个代码。
有人可以帮忙吗? thnx提前
答案 0 :(得分:1)
您没有在真实环境中向我们展示太多代码,但是未能成功清除上一个计时器的一些常见原因是:
包含计时器的变量不是全局变量(或在持续存在的闭包中),因此无法从一次调用到下一次调用,所以当你去clearTimeout(refresh)
时, refresh
变量不具有正确的值。您可以在执行console.log(refresh)
之前执行clearTimeout()
来检查此问题。如果这是您的问题,那么refresh
可能会undefined
。
您不小心启动了多个计时器,因此您覆盖了refresh
变量,而clearTimeout(refresh)
只停止了最后一个计时器,而不是之前的计时器。在某些形式的代码中,最好始终在任何先前的计时器上执行clearTimeout()
,然后再启动一个新的计时器,以确保你没有一个正在运行的计时器,或者只是检查{{{ 1}}语句,如果你已经有一个正在运行。
如果您需要更具体的帮助,您需要披露更多关于您的ACTUAL代码的详细信息,因为您在上面按照确切顺序排列的四行代码并且所有代码都在同一范围内没有您遇到的问题 - 所以显然,实际代码比您披露的更多。
答案 1 :(得分:0)
如何清除settimeout
的示例var myVar;
function myFunction()
{
myVar = setTimeout(function(){alert("Hello")},3000);
}
function myStopFunction()
{
clearTimeout(myVar);
}