10 DOM e Eventos
DOM (Document Object Model) é a estrutura da página HTML que o JavaScript consegue manipular.
Com DOM e eventos, você cria interfaces interativas.
10.1 Selecionando elementos
<h2 id="titulo">Loja Técnica</h2>
<button id="botao">Clique</button>const titulo = document.getElementById("titulo");
const botao = document.getElementById("botao");
titulo.textContent = "Sistema Escolar";Outros seletores:
const primeiroCard = document.querySelector(".card");
const todosOsCards = document.querySelectorAll(".card");10.2 Alterando estilos e classes
const card = document.querySelector(".card");
card.classList.add("ativo");
card.classList.toggle("destaque");
card.style.border = "2px solid #1f6feb";10.3 Eventos
botao.addEventListener("click", () => {
alert("Botão clicado!");
});Eventos comuns:
clickinputchangesubmitkeydown
10.4 Formulários
<form id="formAluno">
<input id="nome" placeholder="Nome" />
<button type="submit">Salvar</button>
</form>const form = document.getElementById("formAluno");
form.addEventListener("submit", (event) => {
event.preventDefault();
const nome = document.getElementById("nome").value.trim();
if (!nome) {
alert("Informe o nome");
return;
}
console.log(`Aluno cadastrado: ${nome}`);
});10.5 Criando elementos dinamicamente
<ul id="lista"></ul>const lista = document.getElementById("lista");
const itens = ["Caderno", "Caneta", "Lápis"];
for (const item of itens) {
const li = document.createElement("li");
li.textContent = item;
lista.appendChild(li);
}10.6 Delegação de eventos
Útil quando itens são criados dinamicamente.
lista.addEventListener("click", (event) => {
if (event.target.tagName === "LI") {
event.target.classList.toggle("feito");
}
});10.7 Exemplo integrado: contador
<p id="valor">0</p>
<button id="menos">-</button>
<button id="mais">+</button>const campo = document.getElementById("valor");
const botaoMenos = document.getElementById("menos");
const botaoMais = document.getElementById("mais");
let contador = 0;
function renderizar() {
campo.textContent = contador;
}
botaoMenos.addEventListener("click", () => {
contador--;
renderizar();
});
botaoMais.addEventListener("click", () => {
contador++;
renderizar();
});10.8 Exercícios
- Crie uma página com botão que altera a cor de fundo.
- Faça um contador com botões de aumentar e diminuir.
- Valide um formulário para impedir envio com campo vazio.
- Crie uma lista de tarefas com botão de remover item.
- Desafio: implemente filtro de tarefas (todas, pendentes, concluídas).