Метод cloneNode в JavaScript
Метод cloneNode позволяет клонировать элемент и получить его точную копию. Эту копию затем можно вставить на страницу с помощью методов prepend, append, appendChild, insertBefore, insertAdjacentElement. В параметре метод получает true либо false. Если передан true, то элемент клонируется полностью, вместе со всем атрибутами и дочерними элементами, а если false — только сам элемент (без дочерних элементов).
Синтаксис
элемент.cloneNode(true или false)
Пример
Сделаем копию блока с классом elem и вставим его в конец блока #parent:
<div id="parent">
<div class="elem">
<p>Первый абзац</p>
<p>Второй абзац</p>
</div>
</div>
let parent = document.getElementById('parent');
let elem = parent.querySelector('.elem');
let clone = elem.cloneNode(true);
parent.appendChild(clone);
// <div id="parent">
// <div class="elem">
// <p>Первый абзац</p>
// <p>Второй абзац</p>
// </div>
// <div class="elem">
// <p>Первый абзац</p>
// <p>Второй абзац</p>
// </div>
// </div>
Пример
С полученным клоном можно работать как с обычным элементом:
<div id="parent">
<div class="elem">
<p>Первый абзац</p>
<p>Второй абзац</p>
</div>
</div>
let parent = document.getElementById('parent');
let elem = parent.querySelector('.elem');
let clone = elem.cloneNode(true);
clone.children[0].innerHTML = 'Новое содержимое первого абзаца';
clone.children[1].innerHTML = 'Новое содержимое второго абзаца';
parent.appendChild(clone);
// <div id="parent">
// <div class="elem">
// <p>Первый абзац</p>
// <p>Второй абзац</p>
// </div>
// <div class="elem">
// <p>Новое содержимое первого абзаца</p>
// <p>Новое содержимое второго абзаца</p>
// </div>
// </div>