javascript设置超时重置不为';行不通
我试图在javascript中重置计时器,但它拒绝工作,它只是启动另一个函数而没有停止前一个函数javascript设置超时重置不为';行不通,javascript,settimeout,reset,cleartimeout,Javascript,Settimeout,Reset,Cleartimeout,我试图在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)
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);
这段代码直接来自应用程序,正如我所解释的,它不会停止timout,但会启动另一个timout
有人能帮忙吗?
thnx prevance您没有在实际上下文中向我们展示您的大部分代码,但未能成功清除前一个计时器的一些常见原因是:
clearTimeout(refresh)
时,refresh
变量不保存正确的值。在执行clearTimeout()
之前,可以通过执行console.log(刷新)
来检查这一点。如果这是您的问题,则刷新
可能是未定义
刷新
变量,而清除超时(刷新)
仅停止最后一个计时器集,而不是较早的计时器集。在某些形式的代码中,最安全的做法是在启动新计时器之前,始终对之前的任何计时器执行clearTimeout()
,以确保尚未运行一个计时器,或者如果已经运行了一个计时器,则使用if
语句检查可能更有意义如果您需要更具体的帮助,您将需要披露实际代码的更多细节,因为您上面的四行代码都在同一个范围内,没有您遇到的问题-因此,显然实际代码的内容比您披露的更多。如何清除settimeout的示例
var myVar;
function myFunction()
{
myVar = setTimeout(function(){alert("Hello")},3000);
}
function myStopFunction()
{
clearTimeout(myVar);
}
你怎么知道第一个计时器没有重置?A显示它应该可以工作。你这里的四行代码没有问题,所以我猜这实际上不是你的代码看起来的样子。如果您需要帮助,您必须向我们展示更多的实际代码。如果按照所示的顺序,直接从代码中复制(中间没有其他代码),则两者都不太可能。我猜OP是错的。你的答案是有用的(但只是猜测),但也要记住结束投票;-)这两种情况似乎都有可能,谢谢,我会设法解决的that@JaredFarrish-问题中的四行代码不可能完全有序,没有中间代码,因为最后两行代码是多余的。OP只需删除最后两行代码,即使保留了它们,也不会出现问题。我认为它们是从程序的不同部分复制而来。@JanDvorak-我宁愿在投票结束前要求进一步澄清。如果OP没有参与并澄清事情,我将投票结束。