replaceChild 是父节点方法,用于用新节点替换其直接子节点,语法为 parentNode.replaceChild(newNode, oldNode),要求 oldNode 必须是 parentNode 的当前子节点且非 null,newNode 可为新建或已存在节点。

replaceChild 是 DOM 节点的方法,用于用一个新节点替换父元素下的某个旧子节点。它必须通过父节点调用,不能直接在要被替换的节点上使用。
基本语法和前提条件
调用格式是:parentNode.replaceChild(newNode, oldNode)。其中:
- parentNode 必须是 oldNode 的直接父节点,否则会报错 “The node to be replaced is not a child of this node”
- newNode 可以是新创建的元素、文本节点,或已存在于文档其他位置的节点(此时会先从原位置移除,再插入)
-
oldNode 必须是 parentNode 当前的子节点,且不能为
null
常见使用步骤
替换操作一般分三步:获取父节点 → 准备新节点 → 执行 replaceChild
- 用
document.getElementById或querySelector获取父元素和待替换的子元素 - 用
document.createElement创建新元素,或用document.createTextNode创建文本节点 - 确保 new 和 old 都是非 null 值,再调用
parent.replaceChild(newNode, oldNode)
例如:
立即学习“Java免费学习笔记(深入)”;
let parent = document.getElementById("container");let old = document.getElementById("old-item");
let newDiv = document.createElement("div");
newDiv.textContent = "这是新内容";
parent.replaceChild(newDiv, old);
注意事项和易错点
这个方法不返回新节点,而是返回被替换掉的 oldNode(可用于后续复用或检查);如果 newChild 已在 DOM 中,它会自动先被移出原位置——这点和 appendChild 不同,无需手动 remove()。
- 不能用
oldNode.replaceChild(...)—— replaceChild 不是旧节点的方法 - 如果 newChild 是 DocumentFragment,整个片段内容会被插入,fragment 本身不进入 DOM
- 若 oldNode 已被移除或不属于该 parent,会抛出 DOMException 错误


















