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
.