O DOM HTML
O ficheiro HTML no disco guarda só caracteres. O navegador constrói a partir dele uma árvore viva, e essa árvore é o DOM. No vidro da paragem há duas linhas: o título Market e a nota Stand clear. A página aberta já traz document. new document() lança um erro, e new Document() é um documento vazio, não este painel.
Uma árvore, não um arredondamento
Na página do objeto Math pedias um número a um objeto partilhado. Aqui não se arredonda uma largura nem se constrói um instante com new Date. Desces a partir de document: o elemento html, depois head ao lado de body, depois o título ao lado da nota. Escolher elementos por mais de um caminho, mudar a marcação e criar nós fica para depois. Esta página aprende a forma e lê dois nós.
Onde está cada peça
Cada linha é um sítio para onde podes apontar. A última coluna é a confusão que te manda para outro sítio.
📊 Lugares neste painel
| Lugar | O que tens na mão | Neste painel | Fácil de trocar |
|---|---|---|---|
document |
a árvore em si | a entrada, sem nome de etiqueta | tomá-la por body |
document.documentElement |
o elemento html | etiqueta HTML |
chamar-lhe o título |
document.head |
o elemento head | irmão de body | procurar Market aqui |
document.body |
o elemento body | pai do título | um nó de texto |
h1#stop |
o elemento do título | texto Market |
o ficheiro gravado no disco |
| texto dentro do título | só caracteres | a palavra Market | um elemento com id |
O título e a nota são filhos elemento de body, por isso são irmãos. A palavra Market não é irmã da nota. É texto dentro do título. tagName volta em maiúsculas, logo o elemento html diz HTML. O nó document não tem etiqueta nem elemento pai.
Três nomes no cimo da árvore
Estas três propriedades nomeiam os elementos de fora. Nenhuma é o título no vidro.
console.log(document.documentElement.tagName);
console.log(document.head.tagName);
console.log(document.body.tagName);
As três linhas são HTML, HEAD e BODY. Head e body são ambos filhos do elemento html, por isso são irmãos. Market não está no head. O título do separador no head é outra cadeia, diferente do título no vidro.
A família do título
O id stop é a pega do elemento do título. O elemento pai é body. O irmão elemento seguinte é a nota.
let stop = document.getElementById("stop");
console.log(stop.parentElement.tagName);
console.log(stop.nextElementSibling.id);
A primeira linha é BODY. A segunda é note. nextElementSibling salta a quebra de linha e cai no parágrafo. O irmão elemento anterior é null, porque nenhum elemento está antes do título dentro de body.
A palavra e a pega
Ler o elemento não é ler os caracteres.
let stop = document.getElementById("stop");
console.log(stop.textContent);
console.log(stop.id);
A primeira linha é Market. A segunda é stop. textContent são os caracteres. id é a pega. A nota diz Stand clear, e essa cadeia não está no título.
Primeiro elementos, depois cada nó
children conta só filhos elemento. childNodes conta também nós de texto, incluindo as quebras de linha do ficheiro do painel. Corre isto num body que só tenha o título e a nota, não nesta página da lição e não no ficheiro de leitura em baixo.
console.log(document.body.children.length);
console.log(document.body.childNodes.length);
Com uma quebra antes do título, outra entre os dois elementos e outra depois da nota, children.length é 2 e childNodes.length é 5. Os três nós a mais são texto e só têm espaço. Se colares as duas etiquetas numa linha, esses nós de texto desaparecem e os dois comprimentos encontram-se.
Um nome que não está no painel
Pede um id que o ficheiro nunca escreveu.
console.log(document.getElementById("platform"));
console.log(document.getElementById("stop") === null);
A primeira linha é null. A segunda é false, porque stop existe. null quer dizer nenhum elemento, não um título vazio. Atribuir uma cadeia nova a textContent muda a árvore viva no navegador. O ficheiro HTML no disco continua a dizer Market.
Uma linha na página
Um terceiro parágrafo mostra a etiqueta do pai e o texto do título. O script fica no fim de body, depois de esses elementos existirem.
<!DOCTYPE html>
<html>
<head>
<title>dom — page</title>
</head>
<body>
<h1 id="stop">Market</h1>
<p id="note">Stand clear</p>
<p id="board">…</p>
<script>
let stop = document.getElementById("stop");
let board = document.getElementById("board");
board.textContent = stop.parentElement.tagName + " / " + stop.textContent;
</script>
</body>
</html>
O parágrafo lê BODY / Market. Neste ficheiro há três elementos em body antes do script, por isso o comprimento 2 não lhe pertence. O elemento script é outro filho. A página seguinte escolhe elementos por mais de um caminho.
Confere o painel
- Mostra os três nomes de etiqueta exteriores e espera HTML, depois HEAD, depois BODY
- Mostra a etiqueta pai do título e espera BODY
- Mostra o id do irmão elemento seguinte e espera note
- Mostra o texto do título e espera Market, depois o id e espera stop
- No painel de dois elementos, espera comprimento de children 2 e de childNodes 5
- Mostra o id em falta e espera null, depois a comparação com stop e espera false
- Lê o parágrafo e espera BODY / Market
Sítio errado
A página abre. O sítio que nomeaste não é o do título.
- Chamar
new document()ou lernew Document()como se fosse este painel - Procurar Market em
document.head - Tratar a palavra Market como irmão elemento da nota
- Ler
children.lengthquando querias cada nó, incluindo quebras de linha - Ler
childNodes.lengthquando só querias o título e a nota - Ler
nullde um id em falta como uma cadeia vazia - Esperar que escrever em
textContentmude o ficheiro no disco
Não mistures
documenté a árvore;documentElementé o elemento htmlheadebodysão irmãos sob esse elemento html- O pai do título é body; o irmão elemento seguinte é a nota
textContentsão os caracteres;idé a pegachildrensão só elementos;childNodesinclui o texto em branco- Um id em falta é
null; o ficheiro gravado não é a árvore viva - A página seguinte escolhe elementos por mais de um id
🧠 Teste Seu Conhecimento
Teste Seu Conhecimento
Desafie-se com este questionário interativo e veja o quão bem você entende o tópico
📝 Instruções
- Leia cada pergunta cuidadosamente
- Selecione a melhor resposta para cada pergunta
- Você pode refazer o quiz quantas vezes quiser
- Seu progresso será mostrado no topo