关于js中的childNodes[]

在学习DOM对象操作HTML时,看到removeChild是用于删除节点,想删除第一个p元素,childNodes[0]竟然没反应,要childNodes[1]才能删除第一个P元素,然后我在前面加了没有标签包裹的文字,再用childNodes[0]却又能删去了?意思是[0]只能用于删除没有标签的文本内容吗?还是怎样。。。求解。。
还有childNodes[3]也是没删去一个。。又是为啥。。

代码如下

<body>
<div id="div">
    这句话用于测试的
    <p id="pid">div的p1元素</p>
    <p>div的p2元素</p>
</div>
<script>
    function addNode(){
        var div=document.getElementById("div");
        var node=document.getElementById("pid");
        var newnode=document.createElement("p");
        newnode.innerHTML="动态添加p元素";
        div.insertBefore(newnode,node);//参数分别是要插入的新节点和它的相对位置
    }
     addNode();
    // 删除节点
    function removeNode(){
        var div=document.getElementById("div");
        var p=div.removeChild(div.childNodes[3]);
        //从1开始的childNodes[0]没反应
    }
    removeNode();
</script>
</body>

下面是结果显示。。
div.childNodes[0]的结果

动态添加p元素

div的p1元素

div的p2元素

div.childNodes[1]的结果

这句话用于测试的

div的p1元素

div的p2元素

div.childNodes[3]的结果

这句话用于测试的

动态添加p元素

div的p1元素

div的p2元素

div.childNodes[4]的结果

这句话用于测试的

动态添加p元素

div的p1元素

阅读 4.6k
1 个回答

是这样的:childNodes是包括一个元素的所有直接子节点。

比如:

<div id="div">
    这句话用于测试的
    <p id="pid">div的p1元素</p>
    <p>div的p2元素</p>
</div>

childNodes(0) 其实就是这句话用于测试的这个文本节点(注意:文本节点也包括不可见字符,例如回车和换行)。

如果想获取所有元素节点,可以使用children,比如获取第一个元素节点children[0],就能取到`<p id="pid">div的p1元素</p>
`

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题