Quando si inizia a studiare JavaScript, uno dei concetti fondamentali da comprendere è il DOM. Senza di esso, una pagina web rimarrebbe statica e priva di interazione.
In questo articolo viene spiegato in modo chiaro e progressivo:
- cos’è il DOM
- come selezionare elementi
- come rendere una pagina interattiva
Cos’è il DOM?
DOM significa Document Object Model.
Quando il browser carica una pagina HTML, non la interpreta come semplice testo, ma la trasforma in una struttura ad albero composta da oggetti.
Esempio:
<body>
<h1 id="titolo">Ciao</h1>
<p class="testo">Benvenuto</p>
</body>
Diventa:
Document
└── body
├── h1
└── p
Ogni elemento HTML diventa un nodo che può essere manipolato tramite JavaScript.
Perché il DOM è importante?
Grazie al DOM è possibile:
- modificare contenuti dinamicamente
- cambiare stili
- reagire alle azioni dell’utente
- creare nuovi elementi
In altre parole, il DOM consente di trasformare una pagina statica in un’esperienza interattiva.
Selezionare elementi nel DOM
Per poter modificare un elemento, è necessario prima selezionarlo.
Di seguito i metodi principali.
getElementById
Questo metodo seleziona un elemento tramite il suo id.
HTML
<h1 id="titolo">Ciao</h1>
JavaScript
let titolo = document.getElementById("titolo");
console.log(titolo);
Restituisce un singolo elemento.
È:
- veloce
- preciso
- molto utilizzato
getElementsByClassName
Permette di selezionare tutti gli elementi con una determinata classe.
HTML
<p class="testo">Uno</p>
<p class="testo">Due</p>
JavaScript
let elementi = document.getElementsByClassName("testo");
console.log(elementi);
Restituisce una HTMLCollection, cioè una lista di elementi.
Per accedere ai singoli elementi:
elementi[0].textContent = "Modificato";
getElementsByTagName
Consente di selezionare elementi in base al nome del tag.
HTML
<h2>Ciao</h2>
<h2>Mondo</h2>
JavaScript
let titoli = document.getElementsByTagName("h2");
console.log(titoli);
Anche in questo caso viene restituita una HTMLCollection.
Accesso agli elementi:
titoli[1].textContent = "Nuovo testo";
⚠️ Attenzione: HTMLCollection
Sia getElementsByClassName che getElementsByTagName restituiscono una lista.
Questo significa che:
❌ Non è corretto:
titoli.textContent = "Ciao";
✔ È corretto:
titoli[0].textContent = "Ciao";
addEventListener: rendere la pagina interattiva
Il metodo addEventListener è fondamentale per gestire le interazioni dell’utente.
Permette di eseguire codice quando si verifica un evento, come:
- click
- movimento del mouse
- pressione di tasti
- input
Esempio base
HTML
<button id="btn">Cliccami</button>
JavaScript
let btn = document.getElementById("btn");
btn.addEventListener("click", function() {
alert("Hai cliccato!");
});
Quando l’utente clicca il bottone, viene eseguita una funzione.
Esempio pratico
let btn = document.getElementById("btn");
let btn2 = document.getElementById("btn2");
let numero = document.getElementById("numero");
let count = 0;
btn.addEventListener("click", function () {
count++;
numero.textContent = count;
});
btn2.addEventListener("click", function () {
count--;
});
In questo caso:
- vengono selezionati gli elementi
- viene ascoltato un evento
- viene modificato il contenuto
Esercizi guidati
Esercizio 1: Cambiare testo con un bottone
Obiettivo
Quando si clicca un bottone, il testo di un titolo cambia.
HTML
<h1 id="titolo">Testo originale</h1>
<button id="btn">Cambia testo</button>
Passaggi guidati
- Selezionare il titolo
- Selezionare il bottone
- Aggiungere un evento click
- Cambiare il testo
Soluzione
let titolo = document.getElementById("titolo");
let btn = document.getElementById("btn");
btn.addEventListener("click", function() {
titolo.textContent = "Testo cambiato!";
});
Esercizio 2: Mostra/Nascondi testo
Obiettivo
Quando si clicca un bottone, un paragrafo deve alternare tra visibile e nascosto.
HTML
<p id="testo">Questo è un testo segreto 👀</p>
<button id="btn">Mostra/Nascondi</button>
Passaggi guidati
- Selezionare il paragrafo
- Selezionare il bottone
- Tenere traccia dello stato (visibile/nascosto)
- Cambiare lo stile
display
Soluzione
let testo = document.getElementById("testo");
let btn = document.getElementById("btn");btn.addEventListener("click", function() {
if (testo.style.display === "none") {
testo.style.display = "block";
} else {
testo.style.display = "none";
}
});
Esercizio 3: Modificare più elementi
Obiettivo
Cambiare il colore di tutti i paragrafi quando si clicca un bottone.
HTML
<p class="testo">Paragrafo 1</p>
<p class="testo">Paragrafo 2</p>
<p class="testo">Paragrafo 3</p><button id="btn">Cambia colore</button>
Passaggi guidati
- Selezionare tutti i paragrafi
- Selezionare il bottone
- Al click, ciclare sugli elementi
- Cambiare lo stile
Soluzione
let paragrafi = document.getElementsByClassName("testo");
let btn = document.getElementById("btn");
btn.addEventListener("click", function() {
for (let i = 0; i < paragrafi.length; i++) {
paragrafi[i].style.color = "red";
}
});
Esercizio 4: Contatore
Obiettivo
Quando si clicca un pulsante, il contatore aumenta, quando si clicca su un altro pulsante il contatore diminuisce.
HTML
<h2 id="numero">0</h2>
<button id="btn">Aumenta</button>
<button id="btn2">Diminuisci</button>
let btn = document.getElementById("btn");
let btn2 = document.getElementById("btn2");
let numero = document.getElementById("numero");
let count = 0;
btn.addEventListener("click", function () {
count++;
numero.textContent = count;
});
btn2.addEventListener("click", function () {
count--;
});
Esercizi
- Creare un titolo, un paragrafo e un pulsante.
Quando si clicca il pulsante:- il titolo cambia testo
- il paragrafo cambia testo
- Creare un titolo, un paragrafo e un pulsante.
Quando si clicca il pulsante:- il titolo cambia font
- il paragrafo cambia colore
- Dato questo HTML:
<ul>
<li>Latte</li>
<li>Pane</li>
<li>Uova</li>
<li>Caffè</li>
</ul>
<p id=”output”></p>
Compito:
UsaregetElementsByTagName("li")e mostrare nel paragrafo il secondo elemento della lista.