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

瀏覽器相容性

另見