Node:removeChild() 方法

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

Node 接口的 removeChild() 方法会从 DOM 中移除一个子节点,并返回被移除的节点。

注意: 只要对被移除的子节点保留了引用,它仍然存在于内存中,但不再是 DOM 的一部分。它仍然可以在代码中稍后重用。

如果 removeChild() 的返回值没有被存储,并且没有其他引用被保留,那么它将在短时间后被 自动删除 出内存。

Node.cloneNode() 不同,返回值会保留与之关联的 EventListener 对象。

语法

js
removeChild(child)

参数

child

要从 DOM 中移除的子节点的 Node

返回值

被移除的 child 节点。

异常

NotFoundError DOMException

如果 child 不是该节点的子节点,则抛出此异常。

TypeError

如果 childnull,则抛出此异常。

示例

简单示例

给定此 HTML

html
<div id="parent">
  <div id="child"></div>
</div>

已知其父节点时移除指定元素

js
const parent = document.getElementById("parent");
const child = document.getElementById("child");
const throwawayNode = parent.removeChild(child);

移除指定元素,无需指定其父节点

js
const node = document.getElementById("child");
if (node.parentNode) {
  node.parentNode.removeChild(node);
}

移除元素的所有子节点

js
const element = document.getElementById("idOfParent");
while (element.firstChild) {
  element.removeChild(element.firstChild);
}

导致 TypeError

html
<!--Sample HTML code-->
<div id="parent"></div>
js
const parent = document.getElementById("parent");
const child = document.getElementById("child");

// Throws Uncaught TypeError
const garbage = parent.removeChild(child);

导致 NotFoundError

html
<!--Sample HTML code-->
<div id="parent">
  <div id="child"></div>
</div>
js
const parent = document.getElementById("parent");
const child = document.getElementById("child");

// This first call correctly removes the node
const garbage = parent.removeChild(child);

// Second call throws NotFoundError
parent.removeChild(child);

规范

规范
DOM
# dom-node-removechild

浏览器兼容性

另见