當鼠標懸停在標籤內的Section One上時,我有一個下拉菜單。我想知道如何讓JavaScript代碼重新檢查一段時間後列表再次處於什麼狀態,以便菜單關閉。誰能幫幫我嗎?如何使下拉菜單在一段時間後消失JavaScript
HTML
<div class = "sidebarwrap">
<ul>
<li>
<a href="#" onmouseover="toggle(this); return true;" onmouseout="timer()">Section One</a>
<ul>
<li><a href="#" >link page</a></li>
<li><a href="#" >link page</a></li>
<li><a href="#" >link page</a></li>
<li><a href="#" >link page</a></li>
</ul>
</li>
</ul>
</div>
CSS
.sidebarwrap{
width:auto;
height:auto;
}
.sidebarwrap ul{
float:left;
display:block;
background:white;
padding:10px;
margin-right:30px;
margin-left:10px;
list-style-type:none;
border:1px dotted #0099CC;
border-radius:100px/10px;
}
.sidebarwrap ul ul{
list-style-type:none;
display:none;
border:0px dotted #0099CC;
border-radius:20px/60px;
}
.sidebarwrap li li{
list-style-type:circle;
border:0px dotted #0099CC;
border-radius:20px/60px;
padding:5px;
}
的JavaScript
var cssNode = document.createElement('link');
cssNode.setAttribute('rel','stylesheet');
cssNode.setAttribute('type','text/css');
cssNode.setAttribute('href', 'javascript-overrides.css');
document.getElementsByTagName('head') [0].appendChild(cssNode);
function toggle(toggler) {
if(document.getElementById){
targetElement = toggler.nextSibling;
if(targetElement.className == undefined){
targetElement = toggler.nextSibling.nextSibling;
}
if (targetElement.style.display == "block")
{
targetElement.style.display = "none";
}
else
{
targetElement.style.display = "block";
timer();
}
}
}
function timer(){
var Time = setTimeout(function(){toggle(toggler)},1000);
}
雖然這可行,但您會遇到問題,嘗試點擊子菜單項,除非您很快。您可能需要爲mouseout事件添加其他邏輯,以處理用戶懸停在其中一個子菜單項上的情況。徘徊 – Bic
我建議像hoverIntent來處理。你可以自己寫,但爲什麼?這是一個小型圖書館,只有這樣做。 – Metagrapher
我喜歡這個答案,所以我將停止使用我的代碼,但是我想補充一點,你仍然想要設置一個全局obj來保存你的定時器,這樣你就不會有用戶在這個範圍內設置4個定時器1秒。 – Metagrapher