我正在创建 JavaScript 下拉菜单,但它没有按预期工作
i am creating javascript drop down menu but its not working as expected?
这是我的html,请检查jsfiddle这未按预期工作
<div id="menu1" class="menu">
<a href="#" id="home">Home</a>
<ul id="homesection">
<li>Item one</li>
<li>Item Two</li>
<li>Item Three</li>
</ul>
</div>
<div id="menu2" class="menu">
<a href="#" id="gallery">Gallery</a>
<ul id="gallerysection">
<li>Item one</li>
<li>Item Two</li>
<li>Item Three</li>
</ul>
</div>
<div id="menu3" class="menu">
<a href="#" id="about">About</a>
<ul id="aboutsection">
<li>Item one</li>
<li>Item Two</li>
<li>Item Three</li>
</ul>
</div>
<div id="clear"> </div>
这是我的 CSS 溺爱
.menu{
float:left;
}
ul{
position:absolute;
width:150px;
z-index:500;
display:none;
}
ul,li{
margin:0;
padding:0;
}
li{
list-style-type:none;
padding:3px;
color:gray;
background-color:"lightblue";
}
a{
text-decoration:none;
font-size:2em;
color:gray;
font-family:verdana;
display:block;
margin-right:15px;
}
#clear{
clear:both;
}
这是我的JavaScript
var links = document.getElementsByTagName("a");
var len = links.length;
for(var i = 0; i<len; i++){
links[i].onmouseover = handleHover;
}
function handleHover(){
var uls = document.getElementsByTagName("ul");
var len = uls.length;
for(var i=0; i<len;i++){
uls[i].style.display = "none";
}
var e = window.event;
var target = e.srcElement.id;
target += "section";
var mainmenu = document.getElementById(target);
mainmenu.style.display = "block";
mainmenu.onmouseout = function(){
mainmenu.style.display = "none";
}
}
它的下拉菜单,但是当光标经过第一个菜单项时,菜单消失了?
你忘了关闭handleHover(),请参阅下面的工作小提琴
http://jsfiddle.net/3tFKb/4/
编辑如果将鼠标悬停和鼠标退出更改为 mouseenter 和 mouseleave,则它按预期工作。
工作代码:
var links = document.getElementsByTagName("a");
var len = links.length;
for(var i = 0; i<len; i++){
links[i].onmouseenter = handleHover;
}
function handleHover(){
var uls = document.getElementsByTagName("ul");
var len = uls.length;
for(var i=0; i<len;i++){
uls[i].style.display = "none";
}
var e = window.event;
var target = e.srcElement.id;
target += "section";
var mainmenu = document.getElementById(target);
mainmenu.style.display = "block";
mainmenu.onmouseleave = function(event){
mainmenu.style.display = "none";
}
}
相关文章:
- 如何在php中创建一个函数,该函数与文本区域一起工作,通过输入类似[color:red]的内容来打印具有等效颜色的文本
- 第一次点击动态创建的表后,点击不工作
- 我怎样才能让jQuery即使在尚未创建的对象上也能工作
- 如何在jquery中为object键创建一个工作变量以避免额外的代码
- Rails Production-可以工作,但不能编辑/删除/创建记录
- 在Alfresco中动态创建空间/文件夹的Javascript;t工作正确
- 是否有可能在 threejs 中创建一个工作的计算机界面
- 角度指令和属性Don'在控制器内创建和设置时无法工作
- 存储创建工作,存储定义不工作
- 为不在javascript中工作的动态创建类设置属性
- 我正在尝试创建一个可以在Internet Explorer(Windows 10,又名Edge)中工作的html语音到文
- 在Meteor中,我如何创建一个跨所有模板工作的通用事件处理程序
- 谷歌工作表中用于获取条目和创建日历事件的脚本示例
- 主页键和结束键don'在页面上创建弹出窗口时无法工作
- 为谷歌工作表创建一个自定义函数
- webkitAudioContext在iOS Safari上创建MediaElementSource不工作
- 动态创建的jQueryUI微调器不工作
- Array.prototype.slice.call如何在getElementsByClassName的重新创建中工作
- 从HTML代码段创建节点列表后,.find()未按预期工作
- 从chrome扩展动态创建Google工作表