DOM & Javascript 09 Aug 2007 11:21 am
DOM - parentNode, firstChild, lastChild e mais…
Este post é continuação de “Continuando com HTML DOM”.
Faço nesse momento minhas palavras as escritas no site da W3C, que essas três propriedades, parentNode, firstChild, e lastChild nos permitem seguir a estrutura do documento e acessar os elementos mais próximos.
parentNode é o nó pai, ou seja, o elemento precedente ao que estamos no momento, por exemplo, se temos o seguinte código:
<p>texto</p>
Neste código o elemento pai é a tag P o filho é o texto contido nela, o filho neste caso que temos apenas um texto simples dentro podemos chamar com firstChild, que pega o primeiro filho do nó pai, nesse caso filho único.
Mais um exemplo para deixar ainda mais claro toda situação:
<table><tr>
<td>Rodrigo</td>
<td>Fante</td>
<td>Fazedor</td>
<td>Site</td>
</tr>
</table>
Neste código acima pegamos o TR como nó pai, poderia ser o table, mas ai teria somente um filho o TR, como quero mais filhos, pois do TR derivam 3 TD, 3 colunas.
Então recapitulando TR é o pai e todos os TD dentro dele são filhos.
O firstChild é o que contém o texto Rodrigo, pois é o primeiro nó logo após o pai, e o lastChild é a coluna que contém o texto Site pois é o último elemento derivado do pai.
Uma vez compreendida a hierarquia, como então posso acessar e interagir com esses nós?
Recuperando o valor de um nó:
Vamos imaginar no HTML temos o seguinte código:
<p id="teste">tete</p>
Analisando o exemplo acima temos um parágrafo que é o pai, e o texto que é o filho, quero pegar o valor desse filho, logo usei o javascript dado no exemplo abaixo:
document.getElementById("teste").firstChild.nodeValue
Ele pega pelo ID teste o valor do primeiro filho dele através da propriedade nodeValue, esta propriedade por ser usada tanto com firstChild como com lastChild.
Removendo um nó filho:
Vamos supor que temos dois divs, um dentro do outro, e queremos que o de dentro seja eliminado, exterminado, sem piedade, basta chamar o exterminador de nós, o removeChild.
Vejamos o seguinte HTML:
<div id="paizao">
<div id="filhao">Sou o filho do meu pai</div>
</div>
Agora como podemos fazer assim para apagar, exterminar com o fiho do paizao ali:
var elem=document.getElementById("filhao");
elem.parentNode.removeChild(x);
Então ali achamos o filho pelo seu ID, e para remove-lo acessamos o pai com o parentNode e pedimos para o pai dar um castigo nesse filho levado o excluindo do nosso HTML com o removeChild.
Certo, a hierarquia ficou clara, entendi como manipular esses nós, mas tem mais alguma propriedade que devo saber dos nós?
Bom, pra terminar com essa conversa familiar de pai, filho, vamos ver a informação que cada nó carrega.
nodeValue:
Como mostrado em um exemplo acima, ele retorna o valor do nó, se este for um texto, caso seja um elemento como uma DIV por exemplo, este método não irá funcionar, retorna um valor vazio, lembrando que o texto dentro de uma DIV é um nó filho dela, e é acessível, somente a DIV propriamente que não.
nodeName:
Retorna o nome da tag em elementos do HTML, caso seja um nó de texto retorna o texto #text.
nodeType:
Retorna um número inteiro, que identifica o tipo do nó.
Relação dos nós mais importantes e seus números identificadores:
- 1. Elemento
- 2. Atributo
- 3. Texto
- 8. comentário
- 9. Documento(document)
Acho que por enquanto é isso ai, já está bem extenso, e sei que esse monte de nó, me perdoem a piada infame, dá um nó na cabeça.
Arrivederci.


on 09 Aug 2007 at 2:22 pm 1.Miguel escreveu …
Ficou 10!!
Muito bom mesmo.
on 09 Aug 2007 at 5:29 pm 2.Allan escreveu …
SHOW!
Danilo falou tudo! =D
Mais fica uma pergunta,
Onde usar isto ? E o que isto beneficia a aplicação ?
Grande Abraço!
on 10 Aug 2007 at 10:49 am 3.Função Design escreveu …
Ae, boa, já deixou minha cachola mais confusa, tá ficando bom ! rsrsss
on 27 Aug 2007 at 10:25 pm 4.uchoaaa escreveu …
Cara, o problema é que no Firefox ele considera a identação do html como nó..
Tipo, no html:
Item 1
Item 2
o primeiro filho de “minhaLista” é um espaço em branco, não o !!
on 27 Aug 2007 at 10:26 pm 5.uchoaaa escreveu …
ops, nao imprimiu o codigo html da lista, hehe..
on 30 Apr 2008 at 11:27 am 6.pifmpcdkvo escreveu …
18 year old hsuck
on 02 May 2008 at 2:08 am 7.tcfipovolo escreveu …
financial institution consulting corp
on 02 May 2008 at 2:31 am 8.kpqjmbenwt escreveu …
weight loss for kids
on 02 May 2008 at 9:35 am 9.ejgtabypqj escreveu …
male male rape
on 02 May 2008 at 10:52 am 10.upwhcdojaf escreveu …
preis xenical
on 03 Jul 2008 at 8:24 pm 11.Joaz escreveu …
Parabéns pelo artigo, bem prático e explicativo!