Javascript:clearTimeout似乎只是挂起,而不是重置或清除?

Javascript:clearTimeout似乎只是挂起,而不是重置或清除?,javascript,jquery,Javascript,Jquery,我对JS非常陌生,正在尝试修改基于JavascriptKit jQuery的megamenu系统,以延迟显示菜单,直到鼠标在锚对象上悬停指定时间为止 我现在面临的问题是,在mouseout上调用的clearTimeout似乎只是暂停setTimeout,而不是取消、清除、重置它 此时,我只是在setTimeout调用后显示一个警报。目前,我将测试的超时时间间隔设置为2000 例如,由于我现在将其设置为2秒延迟,如果我将鼠标悬停在对象上4次,持续1/2秒,则第5次将鼠标悬停在对象上时,我的测试警报

我对JS非常陌生,正在尝试修改基于JavascriptKit jQuery的megamenu系统,以延迟显示菜单,直到鼠标在锚对象上悬停指定时间为止

我现在面临的问题是,在mouseout上调用的clearTimeout似乎只是暂停setTimeout,而不是取消、清除、重置它

此时,我只是在setTimeout调用后显示一个警报。目前,我将测试的超时时间间隔设置为2000

例如,由于我现在将其设置为2秒延迟,如果我将鼠标悬停在对象上4次,持续1/2秒,则第5次将鼠标悬停在对象上时,我的测试警报框会立即出现

我认为clearTimeout应该完全破坏定时事件。为什么它看起来只是暂停倒计时

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()

这是我在这里的第一篇文章。找到了代码按钮。下次使用。如果答案能解决你的问题,别忘了接受答案