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.


11 comentários em “DOM - parentNode, firstChild, lastChild e mais…”

  1. on 09 Aug 2007 at 2:22 pm 1.Miguel escreveu …

    Ficou 10!!

    Muito bom mesmo.

  2. 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!

  3. 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

  4. 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 !!

  5. on 27 Aug 2007 at 10:26 pm 5.uchoaaa escreveu …

    ops, nao imprimiu o codigo html da lista, hehe..

  6. on 30 Apr 2008 at 11:27 am 6.pifmpcdkvo escreveu …

    18 year old hsuck

  7. on 02 May 2008 at 2:08 am 7.tcfipovolo escreveu …

    financial institution consulting corp

  8. on 02 May 2008 at 2:31 am 8.kpqjmbenwt escreveu …

    weight loss for kids

  9. on 02 May 2008 at 9:35 am 9.ejgtabypqj escreveu …

    male male rape

  10. on 02 May 2008 at 10:52 am 10.upwhcdojaf escreveu …

    preis xenical

  11. on 03 Jul 2008 at 8:24 pm 11.Joaz escreveu …

    Parabéns pelo artigo, bem prático e explicativo!

Trackback para este Post | Assine o Feed RSS dos comentários

Comente