Esta seção funciona como uma referência prática sobre DOM no JavaScript. Neste ponto da disciplina, você já viu eventos, arrays e objetos. Agora a ideia é juntar tudo isso para controlar a interface de forma consciente.
Ao final deste guia, você deve conseguir:
DOM significa Document Object Model. Em termos práticos, é a estrutura de objetos que o navegador cria a partir do HTML.
Quando a página é carregada, o navegador transforma o documento em uma árvore. Cada tag vira um nó dessa árvore. O JavaScript não altera o HTML original em disco: ele altera essa representação em memória.
Exemplo:
<body>
<h1>Minha página</h1>
<p>Olá, turma.</p>
</body>
Esse trecho vira uma estrutura parecida com:
documenthtmlbodyh1pÉ justamente essa árvore que o JavaScript consulta e modifica.
Até aqui, a disciplina já trabalhou três ideias importantes:
O DOM entra como a camada visual dessas estruturas.
Fluxo mental comum:
Por isso, o DOM raramente aparece sozinho. Quase sempre ele conversa com eventos e dados.
O ponto de entrada mais comum é o objeto document.
const titulo = document.querySelector('h1');
titulo.textContent = 'Novo título';
Nesse exemplo:
document representa a página carregada;querySelector('h1') encontra o primeiro h1;textContent altera o texto visível.querySelector()É o método mais usado nesta disciplina porque aceita seletores CSS.
const titulo = document.querySelector('h2');
const botao = document.querySelector('#btn-finalizar');
const card = document.querySelector('.card');
Regras importantes:
null;querySelectorAll()Quando você precisa de vários elementos, use querySelectorAll().
const itens = document.querySelectorAll('.item');
O retorno é uma coleção de elementos, que pode ser percorrida com for, for...of ou forEach().
itens.forEach(function(item) {
console.log(item.textContent);
});
querySelector() quando precisar de um elemento;querySelectorAll() quando quiser trabalhar com uma lista de elementos.textContentUse textContent para trabalhar com texto puro.
const status = document.querySelector('#status');
status.textContent = 'Tarefa removida com sucesso.';
Se você passar uma string com tags HTML, elas aparecerão como texto.
status.textContent = '<strong>Olá</strong>';
innerHTMLUse innerHTML quando você realmente quiser inserir HTML.
status.innerHTML = '<strong>Olá</strong>';
Regra prática:
textContent quando a intenção for mostrar texto;innerHTML quando precisar montar estrutura HTML.Depois de selecionar um elemento, você pode ler ou alterar propriedades úteis como:
value em campos de formulário;checked em checkbox e radio;disabled em botões e inputs;src em imagens;href em links.Exemplo:
const campoNome = document.querySelector('#nome');
const botao = document.querySelector('#salvar');
campoNome.value = 'Maria';
botao.disabled = true;
classListEm vez de trocar vários estilos em linha, prefira adicionar ou remover classes.
Métodos principais:
add();remove();toggle();contains().const mensagem = document.querySelector('#status');
mensagem.classList.add('sucesso');
if (mensagem.classList.contains('sucesso')) {
console.log('A classe foi aplicada.');
}
Essa abordagem separa melhor comportamento e aparência.
innerHTMLconst lista = document.querySelector('.lista-tarefas');
lista.innerHTML += '<li class="item-tarefa">Nova tarefa</li>';
createElement()const lista = document.querySelector('.lista-tarefas');
const novoItem = document.createElement('li');
novoItem.textContent = 'Nova tarefa';
novoItem.classList.add('item-tarefa');
lista.append(novoItem);
Para iniciantes, createElement() costuma ser mais fácil de explicar, porque o elemento é montado passo a passo.
Para remover um elemento, use remove().
const aviso = document.querySelector('.aviso');
if (aviso) {
aviso.remove();
}
A verificação evita erro quando o seletor não encontra nada.
Depois da seção de arrays, uma ideia importante é esta: o DOM geralmente exibe o que está em um array.
const nomes = ['Ana', 'Bruno', 'Carla'];
const lista = document.querySelector('#lista');
lista.innerHTML = '';
nomes.forEach(function(nome) {
lista.innerHTML += `<li>${nome}</li>`;
});
Aqui, o array guarda os dados e o DOM mostra esses dados na tela.
Depois da seção de objetos, a aplicação fica ainda mais parecida com um sistema real.
const alunos = [
{ nome: 'Ana', nota: 8 },
{ nome: 'Bruno', nota: 6 }
];
const tabela = document.querySelector('#tabela');
tabela.innerHTML = '';
alunos.forEach(function(aluno) {
tabela.innerHTML += `
<tr>
<td>${aluno.nome}</td>
<td>${aluno.nota}</td>
</tr>
`;
});
Essa é uma das ideias centrais desta etapa da disciplina: o DOM se torna a camada de apresentação dos dados.
O script precisa rodar depois que os elementos existem no documento. Por isso, nesta disciplina é comum usar:
<script src="script.js" defer></script>
Assim o navegador monta o HTML e depois executa o JavaScript.
const caixa = document.querySelector('#nao-existe');
caixa.textContent = 'Teste';
Esse código quebra porque caixa será null.
querySelector() com querySelectorAll()innerHTML quando só precisava de textoIsso aumenta o risco de erro na montagem da interface.
styleSe a mudança é recorrente, o melhor caminho costuma ser aplicar uma classe CSS.
Se a interface mostra uma lista, mas o array continua desatualizado, o comportamento tende a ficar confuso.
textContent para texto;classList para mudanças visuais;As práticas desta seção estão organizadas para avançar do DOM mais direto até o DOM integrando dados:
diario/: criação, edição e remoção de postagens com timestamp;painel-preferencias/: leitura de campos, classes CSS e atualização de atributos;galeria-cards/: criação e remoção de cards dinâmicos;lista-tarefas/: lista com marcação de concluído, remoção e atualização de status.Os pontos centrais sobre DOM são:
document;querySelector() e querySelectorAll() localizam elementos;textContent, innerHTML, value e checked ajudam a ler e alterar conteúdo;createElement(), append() e remove() permitem montar interfaces dinâmicas;Se você dominar esses pontos, começa a sair do “script solto” e passa a construir interfaces organizadas e explicáveis.