面向对象的程序设计-原型模式(案例:下拉菜单)

《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>
 




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值