簡體   English   中英

setTimeout函數沒有調用?

[英]setTimeout function isn't called?

要在菜單上具有鼠標懸停效果上的延遲,setTimeout是選項之一。 但是當我嘗試它時,沒有調用該函數。

HTML:

  <li><a href="#"  
         onmouseover="mopendelay('menu_proj')" 
  <li>

JavaScript:

// open hidden layer
function mopen(id)
{   
    // cancel close timer
    mcancelclosetime();

    // close old layer
    if(ddmenuitem) ddmenuitem.style.visibility = 'hidden';

    // get new layer and show it
    ddmenuitem = document.getElementById(id);
    ddmenuitem.style.visibility = 'visible';

}

// delay menu open on mouseover
function mopendelay(id) 
{
    var delay = setTimeout(function(){
      alert('delay'); // isn't called
      mopen(id);
    }, 200);
    clearTimeout(delay);
}

您需要先清除超時,然后才能執行超時功能。

function mopendelay(id) 
{
    var delay = setTimeout(function(){
        mopen(id);
    }, 200);
}

您將立即在setTimeout返回的句柄上調用clearTimeout 這是為什么? 我相信,如果刪除該代碼,它將按預期工作。

之后,您直接調用clearTimeout 為了什么? 刪除該行,它將正常工作。

您的清除超時應該在傳遞給setTimeout的函數之外

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM