JS菜单

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-cn">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<meta http-equiv="Content-Language" content="gb2312" />
<meta name="author" content="RainoXu" />
<title></title>
</head>
<body>
<style type ="text/css">
/* <![CDATA[ */
body{
padding:0;
margin:0;
text-align:center;
}
#nav{
padding:0;
margin:0 auto;
width:900px;
height:29px;
list-style:none;
position:relative;
}
#nav li{
float:left;
text-align:center;
padding-left:4px;
/*IE6中讨厌的bug,在IE7和FireFox中不设宽度能自动适应内部元素的宽度,IE6不行=.=!!*/
+width:72px;
}
#nav li.highlight{
background:url("http://www.rainoina.com/raino/UserFiles/image/douban_nav/nav_bg_l.jpg") no-repeat left top;
}
#nav span a{
text-decoration:none;
font:14px tahoma;
display:block;
padding-right:9px;
padding-left:5px;
height:29px;
line-height:29px;
}
#nav li.highlight a{
background:url("http://www.rainoina.com/raino/UserFiles/image/douban_nav/nav_bg_r.jpg") no-repeat right top;
}
.subNav{
padding:0;
list-style:none;
width:900px;
height:30px;
background:#EEF9EB;
border-top:#DCF5D5;
display:none;
position:absolute;
left:0;
+left:-40px;
}
.highlight .subNav{
display:block;
}
.subNav li{
height:30px;
line-height:30px;
}
.subNav a{
text-decoration:none;
font:12px tahoma;
}
/* ]]> */
</style>
<ul id="nav">
<li>
<span><a href="###">菜单一</a></span>
<ul class="subNav">
<li><a href="###">1子菜单一</a></li>
<li><a href="###">子菜单二</a></li>
<li><a href="###">子菜单三</a></li>
<li><a href="###">子菜单四</a></li>
</ul>
</li>
<li>
<span><a href="###">菜单二</a></span>
<ul class="subNav">
<li><a href="###">2子菜单一</a></li>
<li><a href="###">子菜单二</a></li>
<li><a href="###">子菜单三</a></li>
<li><a href="###">子菜单四</a></li>
</ul>
</li>
<li>
<span><a href="###">菜单三</a></span>
<ul class="subNav">
<li><a href="###">3子菜单一</a></li>
<li><a href="###">子菜单二</a></li>
<li><a href="###">子菜单三</a></li>
<li><a href="###">子菜单四</a></li>
</ul>
</li>
<li>
<span><a href="###">菜单四</a></span>
<ul class="subNav">
<li><a href="###">4子菜单一</a></li>
<li><a href="###">子菜单二</a></li>
<li><a href="###">子菜单三</a></li>
<li><a href="###">子菜单四</a></li>
</ul>
</li>
</ul>
<script type="text/javascript">
//<![CDATA[
//定义一个控制NAV的类
function navSwap(navId){
this.obj=document.getElementById(navId);
this.subElement=[];
//把#navId的LI子节点(仅仅是子节点,不包括孙子节点)推入栈中
for (var i=0;i<this.obj.childNodes.length;i++){
if (this.obj.childNodes[i].nodeType==1){
this.subElement.push(this.obj.childNodes[i]);
}
}

if (this.subElement.length>0){
//首先将第一个标签选项高亮
this.subElement[0].className="highlight";
for (var i=0;i<this.subElement.length;i++){
//得到各个<span/>中的<a/>节点
var tagNode=this.subElement[i].getElementsByTagName("span")[0].getElementsByTagName("a")[0];

//绑定事件
tagNode.onmouseover=function(){
//得到#navId下的所有li,这里得到的也有来自subNav下的li,但这不影响后面的操作
var allSubTag=document.getElementById(navId).getElementsByTagName("li");
//找到class="highlight"的li,取消它的高亮,一旦找到就跳出循环
for (var j=0;j<allSubTag.length ;j++){
if (allSubTag[j].className=="highlight"){
allSubTag[j].className="";
break;
}
}
//这里的this指向的是onmouseover时触发者<span/>中的<a/>标签,而不是类的内部成员。
this.parentNode.parentNode.className="highlight";
}
}
}
}
//生成一个控制的对象
new navSwap("nav");
//]]>
</script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值