实例演示(列表一个开其余的关)

之前写过这个http://blog.csdn.net/yangxin_blog/article/details/49105867菜单的体现,但是在写了之后就发现了,不太适合,高度要精准控制,并且还不是很好看。现在采用table来封装,我们知道table的每一行写满了之后,下一行会自动加,这个比之前我们自己制定高度好很多。

1,点击之后都可以并存的情况(只需函数写法不一样就可)

dispaly也是自己设置的,通过父节点来操作子节点,显示与否;

/* function open1(node){
		 
		 	//通过父节点来操作兄弟节点
			
			当点击之后出现之后,直接就能打开但是要求在点开一个时候,其余的都关掉

				var nodes = node.parentNode;
				var nn = nodes.getElementsByTagName("ul")[0];
				with (nn.style) {
					display = (display == "block") ? "none" : "block";
				}
			}*/
			</script>

2,点击之后只允许打开一个,其余的都要关掉

<script type="text/javascript">
				function list1(node){
				//这是要对全部操作,必须要得到所有的对象 (根据table 的id 来获得)
				//根据this判断,不是属于this,那么就关闭
				//alert("aa");
				//1,获得点击对象的值
				var nodes = node.parentNode;//传入当前的父节点
				var nn = nodes.getElementsByTagName("ul")[0];//得到当前的对象,要是遍历所有,与这个对象一样,就设置相反的情况,其余的全部关闭
				//2,获得全部对象
				var mm = document.getElementById("menuid");
				var names = mm.getElementsByTagName("ul");
				
				//3,开始一一配对
				for (var x = 0; x < names.length; x++) {
					/*这样写,可以简化,利用下面的方法
					 if (names[x] == nn) {
						if (nn.className == "open2") {
							nn.className = "close2";
						}
						else {
							nn.className = "open2";
						}
					}else {
						nn.className = "close2";
					}*/
					if(names[x]==nn&&names[x].className!="open2"){
							nn.className="open2";
					}else{
							names[x].className="close2";
					}
				}
			}
	</script>
css样式的编写:

<style type="text/css">
		ul{
			list-style:none;
			margin:0px;
			padding:0px;
		}
		table{
			border:#00ff40  solid 1px;
		}
		table  a{
			text-decoration:none;
		}
		table tr td ul{
			display:none;
		}
		.open2{
			display:block;
			background:#8080ff;
		}
		.close2{
			display:none;
		}
效果图(只能开一个的):


完整代码:

<!DOCTYPE html>
<html>
  <head>
    <title>qqMenu.html</title>
	<style type="text/css">
		ul{
			list-style:none;
			margin:0px;
			padding:0px;
		}
		table{
			border:#00ff40  solid 1px;
		}
		table  a{
			text-decoration:none;
		}
		table tr td ul{
			display:none;
		}
		.open2{
			display:block;
			background:#8080ff;
		}
		.close2{
			display:none;
		}
	</style>
	<script type="text/javascript">
		/* function open1(node){
		 
		 	//通过父节点来操作兄弟节点
			
			当点击之后出现之后,直接就能打开但是要求在点开一个时候,其余的都关掉

				var nodes = node.parentNode;
				var nn = nodes.getElementsByTagName("ul")[0];
				with (nn.style) {
					display = (display == "block") ? "none" : "block";
				}
			}*/
			</script>
			<script type="text/javascript">
				function list1(node){
				//这是要对全部操作,必须要得到所有的对象 (根据table 的id 来获得)
				//根据this判断,不是属于this,那么就关闭
				//alert("aa");
				//1,获得点击对象的值
				var nodes = node.parentNode;//传入当前的父节点
				var nn = nodes.getElementsByTagName("ul")[0];//得到当前的对象,要是遍历所有,与这个对象一样,就设置相反的情况,其余的全部关闭
				//2,获得全部对象
				var mm = document.getElementById("menuid");
				var names = mm.getElementsByTagName("ul");
				
				//3,开始一一配对
				for (var x = 0; x < names.length; x++) {
					/*这样写,可以简化,利用下面的方法
					 if (names[x] == nn) {
						if (nn.className == "open2") {
							nn.className = "close2";
						}
						else {
							nn.className = "open2";
						}
					}else {
						nn.className = "close2";
					}*/
					if(names[x]==nn&&names[x].className!="open2"){
							nn.className="open2";
					}else{
							names[x].className="close2";
					}
				}
			}
	</script>
	
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
  </head>
  
  <body >
   <table id="menuid">
   		<tr>
   			<td>
   				<!--<a href="javascript:void(0)" οnclick="open1(this)">同事栏</a>-->
   				<a href="javascript:void(0)" οnclick="list1(this)">同事栏</a>
   				<ul >
   					<li>同事1</li>
   					<li>同事2</li>
   					<li>同事3</li>
   					<li>同事4</li>
   				</ul>
				
   			</td>
   		</tr>
   		<tr>
   			<td>
   				<!--<a href="javascript:void(0)" οnclick="open1(this)">同学栏</a>-->
   				<a href="javascript:void(0)" οnclick="list1(this)">同学栏</a>
   				<ul>
   					<li>同学1</li>
   					<li>同学2</li>
   					<li>同学3</li>
   					<li>同学4</li>
   				</ul>
   			</td>
   		</tr>
   		<tr>
   			<td>
   				<!--<a href="javascript:void(0)" οnclick="open1(this)">黑名单栏</a>-->
   				<a href="javascript:void(0)" οnclick="list1(this)">黑名单栏</a>
   				<ul>
   					<li>黑名单同学1</li>
   					<li>黑名单同学2</li>
   					<li>黑名单同学3</li>
   					<li>黑名单同学4</li>
   				</ul>
   			</td>
   		</tr>
	
   </table>
  </body>
</html>


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值