JavaScript ParentNode与ChildNode接口详解

作者:终端旅客时间:2026-10-23 16:35:44浏览:480

本文深入解析JavaScript中ParentNode和ChildNode接口的核心原理与API用法。详细阐述ParentNode接口的children、firstElementChild、lastElementChild及childElementCount属性,以及append和prepend方法的动态特性。同时介绍ChildNode接口的remove、before、after和replaceWith方法,帮助开发者高效进行DOM节点遍历与操作。

ParentNode 与 ChildNode 接口概述

ParentNode 接口,ChildNode 接口

节点对象在继承 Node 接口的基础上,还具备其他特定的接口。其中,ParentNode 接口用于标识当前节点为父节点,并提供处理子节点的相关方法;ChildNode 接口则用于标识当前节点为子节点,并提供相应的操作方法。

ParentNode 接口详解

ParentNode 接口

当当前节点属于父节点时,会混入(mixin)ParentNode 接口。由于只有元素节点(element)、文档节点(document)和文档片段节点(documentFragment)拥有子节点,因此仅这三类节点具备 ParentNode 接口。

ParentNode.children children 属性返回一个 HTMLCollection 实例,该实例包含当前节点的所有元素子节点。此属性为只读。

以下是遍历某个节点所有元素子节点的示例代码。


for (var i = 0; i < el.children.length; i++) {
 // ...
}

需要注意的是,children 属性仅包含元素子节点,不包括文本等其他类型的子节点。若不存在元素类型的子节点,返回的 HTMLCollection 实例的 length 属性值为 0。

此外,HTMLCollection 是一个动态集合,它会实时反映 DOM 结构的任何变化。

ParentNode.firstElementChild

firstElementChild 属性返回当前节点的第一个元素子节点。若不存在任何元素子节点,则返回 null。

document.firstElementChild.nodeName
// "HTML"

在上述代码中,document 节点的第一个元素子节点为 <HTML>。

ParentNode.lastElementChild lastElementChild 属性返回当前节点的最后一个元素子节点。若不存在任何元素子节点,则返回 null。

document.lastElementChild.nodeName
// "HTML"

在上述代码中,document 节点的最后一个元素子节点为 <HTML>(因为 document 仅包含这一个元素子节点)。

ParentNode.childElementCount childElementCount 属性返回一个整数,表示当前节点所有元素子节点的数量。若不包含任何元素子节点,则返回 0。

document.body.childElementCount // 13

节点追加方法:append 与 prepend

ParentNode.append(),ParentNode.prepend()

append 方法用于为当前节点追加一个或多个子节点,插入位置位于最后一个元素子节点之后。

该方法不仅支持添加元素子节点,还可以添加文本子节点。


var parent = document.body;

// 添加元素子节点
var p = document.createElement('p');
parent.append(p);

// 添加文本子节点
parent.append('Hello');

// 添加多个元素子节点
var p1 = document.createElement('p');
var p2 = document.createElement('p');
parent.append(p1, p2);

// 添加元素子节点和文本子节点
var p = document.createElement('p');
parent.append('Hello', p);

需要注意的是,该方法没有返回值。

prepend 方法用于为当前节点追加一个或多个子节点,插入位置位于第一个元素子节点之前。其用法与 append 方法完全一致,同样没有返回值。

ChildNode 接口详解

ChildNode 接口

如果一个节点存在父节点,那么该节点就拥有了 ChildNode 接口。

ChildNode.remove() remove 方法用于从父节点中移除当前节点。

el.remove()

上述代码在 DOM 结构中移除了 el 节点。

ChildNode.before(),ChildNode.after() before 方法用于在当前节点之前插入一个或多个同级节点,这些节点拥有相同的父节点。

需要注意的是,该方法不仅可以插入元素节点,还可以插入文本节点。


var p = document.createElement('p');
var p1 = document.createElement('p');

// 插入元素节点
el.before(p);

// 插入文本节点
el.before('Hello');

// 插入多个元素节点
el.before(p, p1);

// 插入元素节点和文本节点
el.before(p, 'Hello');

after 方法用于在当前节点之后插入一个或多个同级节点,这些节点拥有相同的父节点。其用法与 before 方法完全相同。

ChildNode.replaceWith() replaceWith 方法使用参数节点替换当前节点。参数可以是元素节点,也可以是文本节点。


var span = document.createElement('span');
el.replaceWith(span);

在上述代码中,el 节点将被 span 节点替换。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

作者最新文章