Join MDN and developers like you at Mozilla's View Source conference, 12-14 September in Berlin, Germany. Learn more at https://viewsourceconf.org

element.cloneNode

Resumo

Retorna a cópia de um elemento.

Syntax

dupNode = element.cloneNode(deep);
  • dupNode é variavél que receberá o nó gerado
  • element é o elemento pai (o elemento que contém o nó que será copiado)
  • deep é uma valor boleano, obrigatório que indica de o a clone vai ser completo ou não (ver notas).

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

Etiquetas do documento e colaboradores

 Colaboradores para esta página: guerreirogabriel, Diogok, Glauco.basilio, Codigo13, Leandro Mercês Xavier
 Última atualização por: guerreirogabriel,