aboutsummaryrefslogtreecommitdiff
path: root/files/pt-pt/web/api/node/clonenode/index.html
blob: cca183e508d8d5f8442cedd866be90e3cec99655 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
---
title: element.cloneNode
slug: Web/API/Node/cloneNode
translation_of: Web/API/Node/cloneNode
original_slug: DOM/element.cloneNode
---
<h3 id="Resumo" name="Resumo">Resumo</h3>

<p>Retorna a cópia de um elemento.</p>

<h3 id="Syntax" name="Syntax">Syntax</h3>

<pre class="eval"><em>dupNode</em> = <em>element</em>.cloneNode(<em>deep</em>);
</pre>

<ul>
 <li><code>dupNode</code> é variável que receberá o nó gerado</li>
 <li><code>element</code> é o elemento pai (o elemento que contém o nó que será copiado)</li>
 <li><code>deep</code> é um valor boleano, obrigatório que indica de o a clone vai ser completo ou não (ver <a href="#Notas">notas</a>).</li>
</ul>

<h3 id="Example" name="Example">Example</h3>

<pre>p = document.getElementById("diogok");
p_prime = p.cloneNode(true);
</pre>

<h3 id="Notas" name="Notas">Notas</h3>

<p>Clonando um nó copiamos todos seus atributos e seus respectivos valores</p>

<p>O nó clonado retornado por <code>cloneNode</code> não faz parte do documento enquanto não for adicionado a um outro nó que faça parte do documento usando <a href="/pt/DOM/element.appendChild" title="pt/DOM/element.appendChild">appendChild</a> 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.</p>

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

<p>Se <code>deep</code> for <code>true</code>, 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 <code>deep</code>, mas você ainda deve definir um valor</p>

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

<p>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. <code> </code></p>

<pre class="eval">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);
</pre>

<p>No trecho de código acima o atributo <code>onclick</code> não é copiado. Nem mesmo com <code>addEventListener</code>.</p>

<h3 id="Especifica.C3.A7.C3.A3o" name="Especifica.C3.A7.C3.A3o">Especificação</h3>

<p><a class="external" href="http://w3.org/TR/DOM-Level-2-Core/core.html#ID-3A0ED0A4">DOM Level 2 Core: cloneNode</a></p>