求解是循环的问题吗
是循环的问题吗··
2016-12-13
不是。是你id的问题,注意到使用了一个for循环为每个p绑定了点击事件,在for循环结束后,每个p标签已经绑定了事件了。但是注意到你的i在内存中的值已经是3了,所以你每次都没有效果,可以在每个节点上绑定一些数据。帮你修改了一个。可以参照一下,测试过了是可以的
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>层叠下拉菜单</title>
<style type="text/css">
*{
margin:0;padding: 0;font-size: 20px;list-style: none;text-decoration: none;color: black;
}
.menu{
width: 210px;margin:50px auto;border: 1px solid #ccc;
}
.menu p{height: 25px;line-height: 25px;font-weight: bold;background: :#eee;border-bottom: 1px solid #ccc;cursor: pointer;padding-left: 5px;background: #eee;}
ul{display: none;}
.menu li{height: 24px;line-height: 24px;padding-left: 5px;}
</style>
<script type="text/javascript">
window.onload=function(){
var p=document.getElementById('menu').getElementsByTagName('p');
var ul=document.getElementById("menu").getElementsByTagName("ul");
for (var i = 0; i < p.length; i++) {
p[i].id = i;
p[i].onclick=function(){
for (var j = 0; j < ul.length; j++) {
if (j==this.id) {
ul[j].style.display='block';
}
else{
ul[j].style.display = "none";
}
}
}
}
}
</script>
</head>
<body>
<div class="menu" id="menu">
<div>
<p>Web前端</p>
<ul>
<li><a href="#"> JavaScript</a></li>
<li>Div+Css</li>
<li><a href="#">jQuery</a></li>
</ul>
</div>
<div>
<p>后台脚本</p>
<ul>
<li><a href="#">PHP</a></li>
<li>ASP .net</li>
<li><a href="#">JSP</a></li>
</ul>
</div>
<div>
<p>前端框架</p>
<ul>
<li><a href="#">Extjs</a></li>
<li>Esspress</li>
<li><a href="#">YUI</a></li>
</ul>
</div>
</div>
</body>
</html>在每个节点上绑定了id,这样就可以正确的得到了索引。
举报