Node.cloneNode()
Метод Node.cloneNode()
возвращает дубликат узла, из которого этот метод был вызван.
Синтаксис
var dupNode = node.cloneNode(deep);
- node
-
Узел, который будет клонирован.
- dupNode
-
Новый узел, который будет клоном
node
- deep Необязательный
-
true,
если дети узла должны быть клонированы илиfalse
для того, чтобы был клонирован только указанный узел.
Пример
var p = document.getElementById("para1");
var p_prime = p.cloneNode(true);
Примечание
Клонирование узлов копирует все атрибуты и их значения, в том числе собственных (в линию) перехватчиков. Это не копирует перехватчики событий, добавленных используя addEventListener()
или тех что назначены через свойства элемента (т.е node.onclick = fn
).
Дубликат узла, возвращённого cloneNode()
не является частью документа, пока не будет добавлен в другой узел, который является частью документа, используя Node.appendChild()
или другой метод. Кроме того, не имеет родителя, пока не будет добавлен к другому узлу.
Если deep
установлен как false
, дочерние узлы не клонируются. Любой текст, который содержит узел также не клонируется, как и содержащийся в одном или более дочернем узле Text
.
Если deep
установлено как true
, все поддеревья (включая текст, который может быть потомком узла Text
) копируется тоже. Для пустых узлов (т.е <img>
и <input>
элементов) это не имеет значения установлен ли deep
как true
или false
.
Предупреждение: Внимание: cloneNode()
может привести к дублированию идентификаторов элементов в документе.
Если исходный узел имеет идентификатор и клон размещён в том же документе, идентификатор должен быть изменён, для того что бы быть уникальным. Имя атрибута также может нуждаться в изменении, в зависимости от будущего имени дубликата.
Чтобы клонировать узел для добавления к другому документу используйте Document.importNode()
вместо этого.
Спецификации
Specification |
---|
DOM Standard # ref-for-dom-node-clonenode① |
Совместимость с браузерами
BCD tables only load in the browser