COMMENT_NODE 注释节点删除不到??

zsyok 2012-05-15 08:38:13
<div id="divid" >

<!--sdfdf-->
</div>



var nodes=document.getElementsByTagName("divid");
for(var i=0;i<nodes.length;i++)
{
if(nodes[i].nodeType!=Node.ELEMENT_NODE)
{
obj.removeChild(nodes[i]);
}
}
return nodes;



为什么不能把注释节点删掉的呀??求解···
...全文
85 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cuixiping 2012-05-16
  • 打赏
  • 举报
回复
删不掉是因为你的循环方式有问题.
div有3个子节点,分别是空文本节点、注释节点、空文本节点。
for(var i=0;i<nodes.length;i++)
这样的循环,你删第1个子节点之后,nodes.length==2,i==1,这时nodes[0]是注释,nodes[1]是最后的空文本节点,因为i是1,所以跳过注释删了最后的空文本节点。
正确的做法是从后往前循环。

var nodes=document.getElementsByTagName("divid").childNodes;
for(var i=nodes.length-1;i>=0;i--)
{
if(nodes[i].nodeType!=Node.ELEMENT_NODE)
{
obj.removeChild(nodes[i]);
}
}
return nodes;
乌镇程序员 2012-05-15
  • 打赏
  • 举报
回复
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>
<div id="divid">

<!--sdfdf-->
</div>

<script type="text/javascript">
var nodes = document.getElementById('divid');
for (var i = 0; i < nodes.childNodes.length; i ++) {
if (nodes.childNodes[i].nodeType == 8) nodes.removeChild(nodes.childNodes[i]);
}
alert(nodes.childNodes);
</script>
</body>
</html>

87,921

社区成员

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

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