Javascript:clearTimeout似乎只是挂起,而不是重置或清除?
我对JS非常陌生,正在尝试修改基于JavascriptKit jQuery的megamenu系统,以延迟显示菜单,直到鼠标在锚对象上悬停指定时间为止 我现在面临的问题是,在mouseout上调用的clearTimeout似乎只是暂停setTimeout,而不是取消、清除、重置它 此时,我只是在setTimeout调用后显示一个警报。目前,我将测试的超时时间间隔设置为2000 例如,由于我现在将其设置为2秒延迟,如果我将鼠标悬停在对象上4次,持续1/2秒,则第5次将鼠标悬停在对象上时,我的测试警报框会立即出现 我认为clearTimeout应该完全破坏定时事件。为什么它看起来只是暂停倒计时Javascript:clearTimeout似乎只是挂起,而不是重置或清除?,javascript,jquery,Javascript,Jquery,我对JS非常陌生,正在尝试修改基于JavascriptKit jQuery的megamenu系统,以延迟显示菜单,直到鼠标在锚对象上悬停指定时间为止 我现在面临的问题是,在mouseout上调用的clearTimeout似乎只是暂停setTimeout,而不是取消、清除、重置它 此时,我只是在setTimeout调用后显示一个警报。目前,我将测试的超时时间间隔设置为2000 例如,由于我现在将其设置为2秒延迟,如果我将鼠标悬停在对象上4次,持续1/2秒,则第5次将鼠标悬停在对象上时,我的测试警报
teststuff:function(){
if(jkmegamenu.toggletest==1)
{
jkmegamenu.executetimedcommand()
jkmegamenu.toggletest=0
}
else
{
//jkmegamenu.executetimedcommandcancel()
clearTimeout(jkmegamenu.teststuff);
}
},
executetimedcommand:function(){
if(jkmegamenu.toggletest==1)
{
alert('abcde')
}
},
canceltimedcommand:function(){
clearTimeout(jkmegamenu.teststuff);
},
clearTimeout
将计时器id作为参数,而不是函数引用
例如,如果您正在为jkmagmenu.teststuff
设置超时,您可以这样做
// set the delayed call
var timerID = setTimeout(jkmegamenu.teststuff, 2000);
// cancel it
clearTimeout(timerID);
timerID = 0;
您将“teststuff”定义为一个函数,然后将其传递给
clearTimeout()
。传递给clearTimeout()
的内容应该是从setTimeout()
返回的变量。如果您将setTimeout()
的返回值赋给“teststuff”,然后重新定义它,您将无法将原始值传递给cleartimout()
这是我在这里的第一篇文章。找到了代码按钮。下次使用。如果答案能解决你的问题,别忘了接受答案