Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 克隆模板内容_Javascript_Html_Dom - Fatal编程技术网

Javascript 克隆模板内容

Javascript 克隆模板内容,javascript,html,dom,Javascript,Html,Dom,这是使用元素的示例 在下面的代码中,我只是在模板元素中编写了一个div元素 <template id="tmpl"> <div class="message">Hello, world!</div> </template> 我们可以看到template.content(基本上是一个文档片段)是在使用它之前克隆的。 有关的解释说: 模板内容被克隆以多次重复使用 我的问题是为什么不克隆就不能重

这是使用
元素的示例

在下面的代码中,我只是在
模板
元素中编写了一个
div
元素

  <template id="tmpl">
     <div class="message">Hello, world!</div>
  </template>
我们可以看到
template.content
(基本上是一个文档片段)是在使用它之前克隆的。 有关的解释说: 模板内容被克隆以多次重复使用


我的问题是为什么不克隆就不能重用它?。你能深入了解这一点吗?

原因是
tmpl.content
是一个元素,当元素已经附加到某个东西上时,你不能将它附加到另一个源上。尝试这样做:

让elem=document.createElement(“div”);
元素附加(tmpl.content);
文件.正文.附加(elem);
设elem2=document.createElement(“div”);
elem2.append(tmpl.content);
文件.正文.附件(elem2);

它不起作用,因为
tmpl.content
已经附加到其他内容上。

原因是
tmpl.content
是一个元素,当元素已经附加到某个内容上时,您不能将其附加到另一个源。尝试这样做:

让elem=document.createElement(“div”);
元素附加(tmpl.content);
文件.正文.附加(elem);
设elem2=document.createElement(“div”);
elem2.append(tmpl.content);
文件.正文.附件(elem2);
它不起作用,因为
tmpl.content
已经附加到其他内容中

<script>
  let elem = document.createElement('div');
  elem.append(tmpl.content.cloneNode(true));
  document.body.append(elem);
</script>