繁体   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