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 都会创建一个全新的克隆,但同一个克隆只能被插入到文档中一次。