如何在javascript中使用Loop复制HTML元素

问题描述 投票:1回答:3

我正在尝试使用javascript for循环复制html元素,循环运行正常,但不会在html中创建新元素。

当我在控制台中打印父亲时,仅继续使用1个元素。

var child = document.getElementById('child');
var father = document.getElementById('father');

for (let i = 0; i < 4; i++) {
  father.appendChild(child)
}
<div id="father">
  <div id="child" class="row mt-5">
    <div class="col-sm-8">
      <h2 class="news" id="">News</h2>
    </div>
  </div>
</div>

我想在浏览器中打印div孩子5次

javascript html css html5 function
3个回答
3
投票

使用.cloneNode

var child = document.getElementById('child');
var father = document.getElementById('father');

for (let i = 0; i < 4; i++) {
  father.appendChild(child.cloneNode(true))
}
<div id="father">
  <div id="child" class="row mt-5">
    <div class="col-sm-8">
      <h2 class="news" id="">News</h2>
    </div>
  </div>
</div>

3
投票

尝试使用cloneNode

var child = document.getElementById('child');
var father = document.getElementById('father');

for (let i = 0; i < 4; i++) {
    let childCopy = child.cloneNode(true);
    father.appendChild(childCopy);
}
<div id="father">
    <div id="child" class="row mt-5">
        <div class="col-sm-8">
            <h2 class="news" id="">News</h2>
        </div>
    </div>
</div>

1
投票

您还可以使用template标记进行克隆,模板标记是一种用于保存客户端内容的机制,该内容在加载页面时不会呈现,但可能随后在运行时使用JavaScript进行实例化。

var father = document.getElementById('father');
var temp = document.getElementsByTagName("template")[0];
  
for (let i = 0; i < 4; i++) {
   father.appendChild(temp.content.cloneNode(true))
}
  <template>
  
    <div class="row mt-5">
        <div class="col-sm-8">
            <h2 class="news" id="">News</h2>
        </div>
    </div>

  </template>
  
  <div id="father">
© www.soinside.com 2019 - 2024. All rights reserved.