[英]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.