当光标在菜单项上时,我试图让子菜单出现,当你转到另一个菜单选项时,新的子菜单会替换另一个子菜单,但是现在第一个选中的子菜单停留在屏幕上,从不消失,当你去另一个菜单选项时,另一个subenu看起来有点像第一个...有人可以帮助我吗?谢谢!
HTML:
<div id="menu">
<div class="menu" id="menu1" onmouseover="affiche(this)"><a href="#.html"> MENU1 </a>
<div class="sousmenu" id="sousmenu1" style="display:none" onmouseout="affiche(this)">
<div><a href="#.html">SOUSMENU11</a></div>
<div><a href="#.html">SOUSMENU12</a></div>
<div><a href="#.html">SOUSMENU13</a></div>
<div><a href="#.html">SOUSMENU14</a></div>
</div>
</div>
<div class="menu" id="menu2" onmouseover="affiche(this)"><a href="#.html">MENU2</a>
<div class="sousmenu" id="sousmenu2" style="display:none" onmouseout="affiche(this)">
<div><a href="#.html">SOUSMENU21</a></div>
<div><a href="#.html">SOUSMENU22</a></div>
<div><a href="#.html">SOUSMENU23</a></div>
<div><a href="#.html">SOUSMENU24</a></div>
<div><a href="#.html">SOUSMENU25</a></div>
</div>
</div>
<div class="menu" id="menu3" onmouseover="affiche(this)"><a href="#.html">MENU3</a>
<div class="sousmenu" id="sousmenu3" style="display:none" onmouseout="affiche(this)">
<div><a href="#.html">SOUSMENU31</a></div>
<div><a href="#.html">SOUSMENU32</a></div>
<div><a href="#.html">SOUSMENU33</a></div>
<div><a href="#.html">SOUSMENU34</a></div>
</div>
</div>
<div class="menu" id="menu4"><a href="#">MENU4</a></div>
<div class="menu" id="menu4"><a href="#">MENU5</a></div>
<div class="menu" id="menu5"><a href="#">MENU6</a></div>
<div class="menu" id="menu6"><a href="#">MENU7</a></div>
CSS:
#menu{
margin:0px 0 0 9px;
background:#50626c;
color:#fff;
float:left;
display:inline;}
#menu div{
width:234px;
text-align:center;}
.menu{
position:relative;}
#menu div a:link, #menu div a:visited, #menu div a:hover{
color:#fff;
font-family:arial,sans-serif;
font-size:14px;
text-decoration:none;
padding-top:7px;
height:28px;
display:block;}
#menu div a:link, #menu div a:visited{
background:url(BG.jpg) no-repeat;}
#menu div a:hover, #menu div a:active, #menu div a:focus{
background:#4172CB ;
text-decoration: underline;}
.sousmenu{
position:absolute;
left:234px;
top:0;}
JS
function affiche(obj){
var id = obj.id;
for(var i = 1; i <= 2; i++){
document.getElementById('sousmenu'+i).style.display = "none";
}
if(document.getElementById('sous'+id)){
document.getElementById('sous'+id).style.display = "block";
}
}
答案 0 :(得分:0)
我认为你用for循环设置它们并且之后忽略了if语句。尝试将if语句放在for循环中,并为其他元素添加else以显示为none。此外,还有一种方法可以通过CSS悬停来实现这一点,而且您可能不想查看任何JavaScript。此网站上的主要导航(关于/ Portfolio / Contact / Extras)就是这样做的,仅限CSS:http://www.visionspark.com
但是这里是如何调整你的代码:
for(var i = 1; i <= 2; i++){
if(document.getElementById('sous'+id)){
document.getElementById('sous'+id).style.display = "block";
} else {
document.getElementById('sousmenu'+i).style.display = "none";
}
}