Метод 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>