Introduzione
Uno dei punti di forza di JavaScript è la possibilità di rendere le pagine web interattive rispondendo a ciò che fa l’utente: clic, digitazioni, passaggi del mouse, scroll e molto altro. Questo è possibile grazie al sistema di eventi.
In questo articolo scoprirai cosa sono gli eventi in JavaScript, come si usano i listener (addEventListener
) e vedrai esempi pratici con click, input e tastiera.
Cosa sono gli eventi?
Gli eventi rappresentano azioni o accadimenti rilevati dal browser, come ad esempio:
- click del mouse
- pressione di un tasto
- modifica in un campo di input
- caricamento della pagina
- invio di un form
Sintassi di base con addEventListener
document.getElementById("pulsante").addEventListener("click", function() { alert("Hai cliccato!"); });
"click"
→ tipo di eventofunction()
→ funzione eseguita all’evento
Eventi più comuni
Evento | Significato |
---|---|
click |
Quando l’utente clicca |
input |
Quando cambia il valore di un input |
keydown |
Quando preme un tasto della tastiera |
submit |
Quando un form viene inviato |
mouseover |
Quando il mouse passa sopra un elemento |
scroll |
Quando l’utente scrolla la pagina |
document.getElementById("pulsante").addEventListener("click", function() { alert("Hai cliccato!"); });
2. Rilevare input in tempo reale
<input type="text" id="nome"> <p id="output"></p> <script> document.getElementById("nome").addEventListener("input", function() { document.getElementById("output").innerText = "Hai scritto: " + this.value; }); </script>
3. Rilevare tasto premuto
document.addEventListener("keydown", function(e) { console.log("Hai premuto: " + e.key); });
Funzioni esterne e rimozione degli eventi
function saluto() { alert("Ciao!"); } const btn = document.getElementById("pulsante"); btn.addEventListener("click", saluto); // Rimuovere l'evento btn.removeEventListener("click", saluto);
Best practice
- Usa sempre funzioni nominate se l’evento deve essere rimosso
- Evita
onclick="..."
nel markup HTML (meglio separare logica e struttura) - Non abusare di
addEventListener
globali: rischiano conflitti - Ricorda di rimuovere gli eventi nei componenti dinamici (es. SPA, modali)