Un évènement, c'est tout ce qui se passe sur la page : un clic, une touche pressée, une souris qui survole un bouton. JavaScript permet d'y réagir pour rendre la page interactive.
Un évènement est une action déclenchée sur la page : clic, survol, frappe au clavier, soumission d'un formulaire, chargement de la page…
JavaScript permet d'écouter ces évènements et d'exécuter une fonction en réponse.
| Évènement | Déclenché quand… |
|---|---|
click |
l'utilisateur clique sur l'élément |
mouseover |
la souris passe au-dessus |
mouseout |
la souris quitte l'élément |
keydown |
une touche du clavier est pressée |
input |
la valeur d'un champ change (à chaque frappe) |
change |
la valeur d'un champ est validée (perte du focus, sélection…) |
submit |
un formulaire est envoyé |
load |
la page (ou une image) a fini de charger |
onclick dans le HTMLLe moyen le plus simple : l'attribut onclick directement dans la balise.
<button onclick="direBonjour()">Clique ici</button>
<script>
function direBonjour() {
alert("Bonjour !");
}
</script>
Ça marche, c'est lisible pour débuter… mais ça mélange HTML et JavaScript.
onclick<button onclick="action1(); action2()">Plusieurs actions</button>
onclick par élément : si tu en écris un deuxième, il écrase le premier.click (clavier, souris…).Pour un petit prototype,
onclickdépanne. Pour tout le reste, utiliseaddEventListener.
addEventListeneraddEventListener attache une fonction à un évènement, depuis le JavaScript, sans toucher au HTML.
<button id="monBouton">Clique ici</button>
<script>
const bouton = document.getElementById("monBouton");
bouton.addEventListener("click", function() {
alert("Bonjour !");
});
</script>
Syntaxe :
element.addEventListener("nomDeLEvenement", fonctionAExecuter);
on : "click", pas "onclick".function direBonjour() {
alert("Bonjour !");
}
bouton.addEventListener("click", direBonjour);
⚠️ On passe le nom de la fonction, sans parenthèses. direBonjour (référence) et non direBonjour() (appel immédiat).
addEventListener ?bouton.addEventListener("click", changerCouleur);
bouton.addEventListener("click", afficherMessage);
bouton.addEventListener("click", incrementerCompteur);
Les trois fonctions s'exécutent au clic. Impossible avec onclick.
Le HTML reste propre, tout le comportement vit dans le <script>.
<button id="valider">Valider</button>
document.getElementById("valider")
.addEventListener("click", validerFormulaire);
C'est le principe du JavaScript non obstrusif (unobtrusive JavaScript) : la structure (HTML), la présentation (CSS) et le comportement (JS) restent dans des fichiers séparés. Le terme est ancien (années 2000) mais l'idée reste d'actualité — c'est la base de tous les frameworks modernes :
.js externe → mis en cache par le navigateur, réutilisable sur plusieurs pages.champ.addEventListener("input", verifierSaisie);
document.addEventListener("keydown", gererClavier);
window.addEventListener("load", initialiser);
bouton.removeEventListener("click", direBonjour);
(Ne fonctionne qu'avec une fonction nommée — pas avec une fonction anonyme.)
eventLa fonction appelée reçoit automatiquement un objet event contenant les infos sur ce qui s'est passé.
bouton.addEventListener("click", function(event) {
console.log(event); // tout l'objet
console.log(event.target); // l'élément cliqué
console.log(event.type); // "click"
});
document.addEventListener("keydown", function(event) {
console.log("Touche pressée :", event.key);
if (event.key === "Enter") {
alert("Tu as appuyé sur Entrée !");
}
});
const formulaire = document.getElementById("monForm");
formulaire.addEventListener("submit", function(event) {
event.preventDefault(); // bloque l'envoi du formulaire
console.log("Envoi intercepté !");
});
<button id="changeur">Change la couleur</button>
<p id="texte">Regarde-moi changer !</p>
<script>
const bouton = document.getElementById("changeur");
const texte = document.getElementById("texte");
bouton.addEventListener("click", function() {
texte.style.color = "crimson";
texte.style.fontWeight = "bold";
});
texte.addEventListener("mouseover", function() {
texte.style.backgroundColor = "yellow";
});
texte.addEventListener("mouseout", function() {
texte.style.backgroundColor = "transparent";
});
</script>
onclick="..." dans le HTML : rapide, mais limité et à éviter dès que le projet grandit.element.addEventListener("click", fonction) : la bonne méthode, plusieurs écouteurs possibles, HTML et JS séparés.on : "click", "keydown", "submit"…event : event.target, event.key, event.preventDefault()…addEventListener("click", maFonction).