nextSibling.nodeName为#text ???

googleelgoog 2012-04-15 02:37:38
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html>

<head>
<script language="javascript">

function change(obj)
{
if(obj.innerText=="[-]")
{
obj.innerText="[+]";

//下面的alert我测试了下,当前对象的.parentNode.nextSibling.nodeName
//应该是ul,怎么弹出显示的是#text啊???
alert(obj.parentNode.nextSibling.nodeName);

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;
}

</script>
<link rel="stylesheet" type="text/css" href="css.css" />
</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>

...全文
162 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
aihua17 2012-04-16
  • 打赏
  • 举报
回复
 function change(obj)
{
if(obj.innerText=="[-]")
{
obj.innerText="[+]";

//下面的alert我测试了下,当前对象的.parentNode.nextSibling.nodeName
//应该是ul,怎么弹出显示的是#text啊???
// alert(obj.parentNode.nextSibling.nodeName);
var test = obj.parentNode.nextSibling;
if(test.nodeName == "text"){
test = test.nextSibling;
}
alert(test.nodeName);

next(obj.parentNode).style.display = "none";
}else{
obj.innerText="[-]";
next(obj.parentNode).style.display = "block";
}
}
aihua17 2012-04-16
  • 打赏
  • 举报
回复
firefox等支持W3C规范的浏览器会把换行空白识别为一个NODE,你把中间的换行去掉就可以识别正确的,需要加一个判断

87,989

社区成员

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

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