《javascript高级程序设计》第三版147页
经典参考案例:
案例效果如图:
代码如下
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
<style type="text/css">
*{ padding:0; margin:0; list-style:none;}
.all{ width:440px; height:30px; background:url(img/bg.jpg) no-repeat; margin:100px auto; line-height:30px; text-align:center; padding-left:10px; margin-bottom:0;}
.all ul li{ width:100px; height:30px; background:url(img/libg.jpg); float:left; margin-right:10px; position:relative; cursor:pointer;}
.all ul ul{ position:absolute; left:0; top:30px; display:none;}
</style>
</head>
<body>
<div class="all" id="list">
<ul>
<li>一级菜单
<ul>
<li>二级菜单</li>
<li>二级菜单</li>
<li>二级菜单</li>
</ul>
</li>
<li>一级菜单
<ul>
<li>二级菜单</li>
<li>二级菜单</li>
<li>二级菜单</li>
</ul>
</li>
<li>一级菜单
<ul>
<li>二级菜单</li>
<li>二级菜单</li>
<li>二级菜单</li>
</ul>
</li>
<li>一级菜单
<ul>
<li>二级菜单</li>
<li>二级菜单</li>
<li>二级菜单</li>
</ul>
</li>
</ul>
</div>
<div class="all" id="list2">
<ul>
<li>一级菜单
<ul>
<li>二级菜单</li>
<li>二级菜单</li>
<li>二级菜单</li>
</ul>
</li>
<li>一级菜单
<ul>
<li>二级菜单</li>
<li>二级菜单</li>
<li>二级菜单</li>
</ul>
</li>
<li>一级菜单
<ul>
<li>二级菜单</li>
<li>二级菜单</li>
<li>二级菜单</li>
</ul>
</li>
<li>一级菜单
<ul>
<li>二级菜单</li>
<li>二级菜单</li>
<li>二级菜单</li>
</ul>
</li>
</ul>
</div>
</body>
</html>
<script>
// 获取对象 遍历对象操作 显示模块 隐藏模块
function List(id){
this.id=document.getElementById(id);
this.lis=this.id.children[0].children;//获取的是全部的一级菜单
}
List.prototype.init=function(){
var that=this;
for(var i=0;i<this.lis.length;i++){
this.lis[i].οnmοuseοver=function(){
that.show(this.children[0]);//此处this表示鼠标经过的对象
}
this.lis[i].οnmοuseοut=function(){
that.hide(this.children[0]);
}
}
}
List.prototype.show=function(obj){
obj.style.display="block";
}
List.prototype.hide=function(obj){
obj.style.display="none";
}
<pre name="code" class="html"> //第一排菜单的设置
var list=new List("list");
list.init();console.log(list.id.children[0].children[0].children[0].children);//children是获取所有的孩子,不管什么格式 //第二排二级菜单的设置var list2=new List("list2");list2.init(); </script>