标签:
1.先来一个的,就是一个ul菜单主里面包含一个a标签和一个ol子菜单,代码如下:
<head>
<meta charset="UTF-8">
<title>折叠菜单</title>
<!--设置页面加载完成后子菜单样式为隐藏 -->
<style>
#ool {
display:none;
}
</style>
</head>
<body>
<ul>
<li>
<a href="###" onclick="show();">主菜单</a>
<ol id="ool">
<li><a href="">子菜单1</a></li>
<li><a href="">子菜单2</a></li>
<li><a href="">子菜单3</a></li>
</ol>
</li>
</ul>
<script>
var i = 0; //先定义一个全局变量并赋值为0;
function show() { //定义一个函数show();
if(i == 0){
document.getElementById(‘ool‘).style.display = ‘block‘;
i = 1;
}else{
document.getElementById(‘ool‘).style.display = ‘none‘;
i = 0;
}
}
</script>
</body>
2.当主菜单有好几个的时候,这他喵就麻烦了。下面这个方法是请教老师的。
????:为什么自己没有这种思维和方法?
就来三个主菜单吧,代码如下:
<head>
<meta charset="UTF-8">
<title>折叠菜单</title>
<!--设置页面加载完成后子菜单样式为隐藏 -->
<style>
ol {
display:none;
}
</style>
</head>
<body>
<ul>
<li>
<a href="###" status="0" onclick="show(this);">主菜单1</a><ol > //注意这里:因为下面JS用到了nextSibling这个获取a标签下一个兄弟元素的方法,所以
<ol>要紧贴</a>,不能留空格,要不获取不到ol标签。还有就是show(this)
里面的this代表当前对象;也就是a标签,下面的obj就是它的形参,a为实参。
<li><a href="">子菜单1</a></li>
<li><a href="">子菜单2</a></li>
<li><a href="">子菜单3</a></li>
</ol>
</li>
<li>
<a href="###" status="0" onclick="show(this);">主菜单2</a><ol >
<li><a href="">子菜单1</a></li>
<li><a href="">子菜单2</a></li>
<li><a href="">子菜单3</a></li>
</ol>
</li>
<li>
<a href="###" status="0" onclick="show(this)">主菜单3</a><ol>
<li><a href="" >子菜单1</a></li>
<li><a href="">子菜单2</a></li>
<li><a href="">子菜单3</a></li>
</ol>
</li>
</ul>
<script>
//在写函数之前先给每个主菜单下的a标签设置一个状态属性,也就是代码中的status=‘0‘;和上面一个主菜单时设置i=‘0‘时一样的道理。
function show(obj) { //定义一个含有参数的函数show();参数obj其实就是代表主菜单下的a标签;
var i = obj.getAttribute(‘status‘); //获取obj的属性status;
if(i == 0){
obj.nextSibling.style.display = ‘block‘; //obj(a)下一个兄弟元素也就是ol标签的样式中的display属性从默认的‘none‘变为‘block‘;
obj.setAttribute(‘status‘,1); //设置obj(a)的状态属性也就是开始就设置的status从开始的0变为1;
}else{
obj.nextSibling.style.display = ‘none‘;
obj.setAttribute(‘status‘,0);
}
}
</script>
</body>
从上面看到,其实JS代码也是极少,主要还是要学习和培养这中思维。不是不懂,是想不到...........
标签:
原文地址:http://www.cnblogs.com/lss-bk/p/5754545.html