为了延迟菜单onmouseover效果,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);
}
答案 0 :(得分:4)
您可以在执行超时功能之前清除超时。
function mopendelay(id)
{
var delay = setTimeout(function(){
mopen(id);
}, 200);
}
答案 1 :(得分:2)
您立即在clearTimeout
返回的句柄上调用setTimeout
。这是为什么?我相信如果删除它,代码将按预期工作。
答案 2 :(得分:0)
您之后直接致电clearTimeout
。无论如何?删除该行,它将正常工作。
答案 3 :(得分:0)
您的清除超时应该超出传递给setTimeout
的函数