请教基础的树状目录折叠问题

googleelgoog 2012-04-14 11:03:51
<html>
<head>
<script language="javascript">
function change(obj)
{
if(obj.innerText=="[-]")
{
obj.innerText="[+]";
}else{
obj.innerText="[-]";
}
}
</script>
</head>
<body>
<div>
<p><span onclick="change(this)">[-]</span>aaa<p/>
<ul>
<li>aaaaaa</li>
<li>aaaaaa</li>
<li>aaaaaa</li>
</ul>
<p><span onclick="change(this)">[-]</span>bbb<p/>
<ul>
<li>bbbbbb</li>
<li>bbbbbb</li>
<li>bbbbbb</li>
</ul>
<p><span onclick="change(this)">[-]</span>ccc<p/>
<ul>
<li>cccccc</li>
<li>cccccc</li>
<li>cccccc</li>
</ul>
</div>
</body>
</html>


在这段代码的基础上帮我实现下,点击相应的span后隐藏相应的ul列表,代码不要太复杂,我刚开始学,代码越简单越好,方法最好是通用的,不要在ul里添加id或是class,如果有几十个ul列表,那不是要添加几十个啊。
...全文
76 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzhiyuan 2012-04-14
  • 打赏
  • 举报
回复
纠正一点你的错误,你p的结束符写错了,应该是</p>而不是<p/>
下面是隐藏显示代码,很简单。就是找到当前p的下一个元素ul就行了

function change(obj) {
if (obj.innerText == "[-]") {
obj.innerText = "[+]";
next(obj.parentNode).style.display = "none";
} else {
obj.innerText = "[-]";
next(obj.parentNode).style.display = "block";
}
}

function next(elem) {//获得下一个元素节点
do {
elem = elem.nextSibling;
} while (elem && elem.nodeType != 1);//nodetype=1是元素节点
return elem;
}

87,990

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧