--- title: element.cloneNode slug: DOM/element.cloneNode translation_of: Web/API/Node/cloneNode ---

Resumo

Retorna a cópia de um elemento.

Syntax

dupNode = element.cloneNode(deep);

Example

p = document.getElementById("diogok");
p_prime = p.cloneNode(true);

Notas

Clonando um nó copiamos todos seus atributos e seus respectivos valores

O nó clonado retornado por cloneNode não faz parte do documento enquanto não for adicionado a um outro nó que faça parte do documento usando appendChild ou outro método similar. Enquanto não for adicionado a um outro nó, será um nó sem pai. Ou seja, o clone não herda o pai do original.

Se deep for false, nada sobre os nós filhos será clonado. Qualquer texto contido no nó não será clonado junto, já que o texto fica contido em nós de texto.

Se deep for true, toda a subárvore (incluíndo texto) é copiado também. Para nós vazios (como os elementos IMG e INPUT) não importa qua valor que você coloque em deep, mas você ainda deve definir um valor

Note que o cloneNode pode causar o problema de termos dois elementos com um mesmo id em um documento!

Somente os eventos colocados em atributos inline são copiados. Os eventos adicionados após a renderização do nó via javascript não são copiados.

var elms = document.getElementById('foo');
elms.onclick = function(){
	alert('Eu não deveria ser copiado?');
}
var g = elms.cloneNode(true);
g.id = 'foo2';
g.style.top = '0px';
document.body.appendChild(g);

No trecho de código acima o atributo onclick não é copiado. Nem mesmo com addEventListener.

Especificação

DOM Level 2 Core: cloneNode