DOM

O DOM (Document Object Model) de uma página é o modelo de objetos dessa página e é também uma interface de programação dessa página.

Após carregar uma página, o browser cria uma árvores de objetos que representam a estrutura dos elementos de HTML dessa página: é o DOM.

No DOM todos os elementos de HTML são objetos de Javascript com propriedades, métodos e eventos.

Através de Javascript, podemos aceder a esses objetos, modificá-los, eliminá-los e até inserir novos objetos alterando dinamicamente o aspeto da página após ela ter sido carregada e sem necessidade de a recarregar.

Nós

No DOM tos os objetos são nós. O DOM é representado através de uma árvore de nós.

De acordo com o standard DOM da W3C, tudo num documento HTML é um nó:

  • O documento inteiro é um nó de documento.
  • Cada elemento de HTML é um nó de elemento.
  • O texto no interior dos elementos de HTML são nós de texto.
  • Cada atributo de HTML é um nó de atributo.
  • Os comentários são nós de comentário.

O tipo de nó é dado pela propriedade nodeValue em que :

1 – é Elemento de HTML
2 – é nome de atributo
3 – é um nó de texto
8 – é um comentário

O DOM vê os documentos HTML como estruturas em árvore. A estrutura é chamada Árvore de Nós.

Considere-se a seguinte página html:

<html> 
<head> 
<title>My title</title> 
</head> 
<body> 
<h1>My header</h1> 
<a href="#">My link</a> 
</body> 
</html>

A estrutura DOM da página acima é representada abaixo :

No DOM todos os nós da estrutura podem ser acedidos através de JavaScript. Todos os elementos de HTML (nós do tipo 1) podem ser modificados e nós podem ser criados e/ou eliminados.

Parents, children e siblings

Os nós numa Árvore de Nós têm uma relação hierárquica entre si.

Os termos parent, child e sibling são usados para descrever essas relações. Nós parent têm filhos (children). Nós children do mesmo nível são chamados siblings (irmãos).

  • Numa Árvore de Nós, o nó de topo é chamado root.
  • Cada nó tem exactamente um parent (pai) excepto a root (que não tem parent).
  • Um nó pode ter um número qualquer de children.
  • Siblings são nós com o mesmo parent.

A imagem seguinte ilustra parte de uma Árvore de Nós com a relação entre os nós:

Considere-se o seguinte fragmento de HTML:

<html> 
   <head> 
      <title>Manual de DOM</title> 
   </head> 
   <body> 
      <h1>Lição 1</h1> 
      <p>Olá mundo!</p> 
   </body> 
</html>

Do HTML acima:

  • O nó <html> não tem nó parent; É um nó root
  • O nó parent dos nós <head> e <body> é o nó <html>
  • O nó parent do nó de texto “Olá mundo!” é o nó <p>

e:

• O nó <html> tem dois nós child: <head> e <body>

• O nó <head> tem um nó child: o nó <title>

• O nó <title> tem um nó child: o nó de texto “Manual de DOM”

• Os nós <h1> e <p> são siblings e nós child de <body>

e:

• O elemento <head> é o primeiro  child do elemento  <html> 

• O elemento <body> é o último child do elemento <html>

• O elemento <h1> é o primeiro child do elemento <body> 

• O elemento <p> é o ultimo child do elemento  <body> 

O objeto document

O objeto document representa toda a página.

Se quisermos aceder a qualquer elemento de uma página, devemos começar sempre por aceder ao objeto document dessa página.

O objeto document possui métodos para encontrar elementos de uma página, assim como métodos para criar, eliminar e substituir elementos

Propriedades do objeto document

PropriedadeDescrição
anchorsRetorna uma coleção com todos os elementos <a>
bodyRetorna o elemento <body>
documentElementRetorna o elemento <html>
formsRetorna uma coleção com todos os elementos <form>
headRetorna o elemento <head>
imagesRetorna uma coleção com todos os elementos <img>
refererRetorna o URL do documento que carregou este documento
titleRetorna o titulo do documento
URLRetorna o url do documento