document.importNode

232 阅读1分钟

1. 概念

document.importNode 是 JavaScript 中的一个方法,用于克隆给定的节点,可以用于克隆 <template> 元素中的内容。

它的语法如下:

const newNode = document.importNode(node, deep);
  • node 是要克隆的节点。
  • deep 是一个布尔值,表示是否深度克隆子节点。如果为 true,则会克隆节点及其所有后代;如果为 false,则只克隆节点本身,不包括子节点。

2. 例子

const template = document.getElementById('myTemplate'); // 获取模板元素

// 复制模板内容
const clone = document.importNode(template.content, true); // 使用 importNode 方法克隆内容

// 插入复制的内容到页面中
document.body.appendChild(clone);

这段代码中,document.importNode<template> 元素中导入其内容,并创建了一个复制品 clone。这个克隆的内容 clone 可以被插入到文档中,以便在页面上显示 <template> 中定义的内容,但不会影响原始模板。

3. 注意事项

document.importNode 方法每次调用都会创建一个全新的克隆节点。这意味着你可以多次使用相同的克隆节点。但是,一旦一个克隆节点被插入到文档中,它不能再次被直接插入,因为 DOM 节点在插入到文档中后会自动移除。如果你想再次插入相同内容,你需要再次克隆它。

举个例子:

const template = document.getElementById('myTemplate');
const clone = document.importNode(template.content, true);

document.body.appendChild(clone); // 插入第一次

// 如果你想再次插入相同内容,你需要再次克隆
const cloneAgain = document.importNode(template.content, true);
document.body.appendChild(cloneAgain); // 插入第二次

在上面的示例中,template.content 首先被克隆并插入到文档中,然后,为了再次插入相同内容,需要再次使用 document.importNode 创建一个新的克隆,并将其插入到文档中。

每次调用 document.importNode 都会创建一个全新的克隆,但同一个克隆只能被插入到文档中一次