节点:cloneNode() 方法

cloneNode()Node 接口的方法,它返回调用此方法的节点的副本。它的参数控制是否也克隆节点中包含的子树。

克隆节点会复制其所有属性及其值,包括内联(内联)侦听器。它不会复制使用 addEventListener() 添加的事件侦听器,也不会复制分配给元素属性的事件侦听器(例如,node.onclick = someFunction)。此外,对于 <canvas> 元素,不会复制绘制的图像。

警告:cloneNode() 可能会导致文档中出现重复的元素 ID!

如果原始节点具有 id 属性,并且克隆将被放置在同一文档中,那么您应该将克隆的 ID 修改为唯一的。

此外,可能需要修改 name 属性,具体取决于是否期望重复名称。

要克隆一个节点并将其插入到另一个文档中,请使用 Document.importNode() 而不是。

语法

js
cloneNode()
cloneNode(deep)

参数

deep 可选

如果为 true,则克隆节点及其整个子树,包括可能存在于子 Text 节点中的文本。

如果为 false,则只克隆节点。不会克隆子树,包括节点包含的任何文本。

请注意,deep空元素(例如 <img><input> 元素)没有影响。

返回值

克隆的新 Node。克隆的节点没有父节点,也不属于文档,直到它使用 Node.appendChild() 或类似方法添加到属于文档的另一个节点为止。

示例

js
let p = document.getElementById("para1");
let p_prime = p.cloneNode(true);

规范

规范
DOM 标准
# ref-for-dom-node-clonenode①

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。