Vou mostrar-te: os três passos de cada feitiço
Quase tudo o que o JavaScript faz numa página segue três passos:
- Encontrar um elemento na página (um botão, um título, uma imagem…),
- ouvir um evento (um clique, passar o rato, escrever texto…),
- fazer algo (mudar o texto, a cor, esconder, mostrar…).
Eis como isso se parece em código. No HTML, adiciona um botão e um parágrafo:
<button id="my-button">Click me</button>
<p id="greeting">Nothing has happened yet.</p>
E em script.js:
// 1. Find the elements by their id
const myButton = document.getElementById("my-button");
const greeting = document.getElementById("greeting");
// 2. Listen for a click on the button
myButton.addEventListener("click", () => {
// 3. Do something: change the paragraph's text
greeting.textContent = "The spell works! 🎉";
});
Vamos desmontar as coisas novas:
id="my-button"– uma etiqueta com nome para o elemento, parecida com uma classe, mas umiddeve aparecer só uma vez na página. O JavaScript usa-o para encontrar o elemento.const– uma caixa com nome (uma variável), onde guardamos o elemento que encontrámos. Mais sobre variáveis na próxima vez.document.getElementById("...")– «página, encontra-me o elemento com este id.»addEventListener("click", () => { ... })– «quando acontece um clique, corre o que está dentro das chavetas.» Aquela seta estranha() => {}chama-se função – um pacote de código que corre mais tarde.textContent– o texto dentro de um elemento. Quando lhe atribuis texto novo, muda na página de imediato.
Agora és tu 💪
Adiciona o teu primeiro feitiço ao teu site. Escolhe um conforme o teu projeto (ou inventa o teu):
🏫 Site da escola – botão «O que há hoje no almoço?»
HTML (na página inicial):
<button id="lunch-button">What's for lunch today?</button>
<p id="lunch"></p>
script.js:
const lunchButton = document.getElementById("lunch-button");
const lunch = document.getElementById("lunch");
lunchButton.addEventListener("click", () => {
lunch.textContent = "Today: pizza and salad! 🍕";
});
🙋 Site pessoal – botão «Conta-me uma piada»
<button id="joke-button">Tell me a joke</button>
<p id="joke"></p>
const jokeButton = document.getElementById("joke-button");
const joke = document.getElementById("joke");
jokeButton.addEventListener("click", () => {
joke.textContent = "Why do programmers prefer dark mode? Because light attracts bugs! 😄";
});
🌍 Diário de viagens – botão «Para onde vamos a seguir?»
<button id="where-button">Where are we going next?</button>
<p id="where"></p>
const whereButton = document.getElementById("where-button");
const where = document.getElementById("where");
whereButton.addEventListener("click", () => {
where.textContent = "Packing our bags: we're headed to the beach in Greece! 🌊";
});
⚽ Site de clube – botão «Quando é o próximo jogo?»
<button id="match-button">When's the next match?</button>
<p id="match"></p>
const matchButton = document.getElementById("match-button");
const match = document.getElementById("match");
matchButton.addEventListener("click", () => {
match.textContent = "Saturday at 10:00, home game vs. Riverside. Come cheer us on! 📣";
});
Bónus: estiliza o teu botão em CSS para ficar bonito:
button {
font-size: 16px;
font-weight: bold;
padding: 10px 20px;
border: none;
border-radius: 999px;
background-color: #1d4ed8;
color: white;
cursor: pointer;
}
button:hover {
background-color: #1e40af;
}
Não funciona? Abre a consola (F12). Os erros mais comuns: 1) o id no HTML não corresponde exatamente ao nome em getElementById (até maiúsculas/minúsculas contam), 2) o <script> não está no fim do <body>, 3) uma chaveta em falta – a consola diz-te o número da linha.
Verifica tu: Clicas no botão e aparece texto na página. Acabaste de ligar as três linguagens da web: HTML (o botão), CSS (o aspeto) e JavaScript (o comportamento).
O que ficas a saber desta lição
- Cada feitiço: encontrar um elemento → ouvir um evento → fazer algo.
document.getElementById("id")encontra um elemento,addEventListener("click", () => {...})espera por um clique.textContentmuda o texto de um elemento de imediato, sem recarregar a página.
© 2026 Ing. Martin Polak / AlgoRhino · Condições de uso do conteúdo