Chapitre 7 : Le DOM (Document Object Model)

Écouter la leçon Lecture audio assistée par IA

1. Qu'est-ce qu'un événement ?

Un événement est une action qui se produit dans le navigateur (clic, saisie, chargement de page, etc.). JavaScript permet de réagir à ces événements.

2. addEventListener()

La méthode recommandée pour gérer les événements :

<button id="monBouton">Cliquez-moi</button>

<script>
let bouton = document.getElementById("monBouton");

bouton.addEventListener("click", function() {
    alert("Bouton cliqué !");
});
</script>

3. Types d'événements courants

Événements de souris

element.addEventListener("click", () => {});      // Clic
element.addEventListener("dblclick", () => {});    // Double-clic
element.addEventListener("mouseenter", () => {});  // Survol
element.addEventListener("mouseleave", () => {});  // Sortie du survol
element.addEventListener("mousemove", () => {});   // Mouvement

Événements de clavier

document.addEventListener("keydown", () => {});  // Touche enfoncée
document.addEventListener("keyup", () => {});    // Touche relâchée
document.addEventListener("keypress", () => {}); // Touche pressée

Événements de formulaire

input.addEventListener("input", () => {});    // Saisie en cours
input.addEventListener("change", () => {});   // Valeur modifiée
form.addEventListener("submit", () => {});    // Soumission

Événements de page

window.addEventListener("load", () => {});    // Page chargée
window.addEventListener("resize", () => {});  // Fenêtre redimensionnée
window.addEventListener("scroll", () => {});  // Défilement

4. L'objet Event

Contient des informations sur l'événement :

bouton.addEventListener("click", function(event) {
    console.log("Type:", event.type);           // "click"
    console.log("Target:", event.target);       // Élément cliqué
    console.log("Position X:", event.clientX);  // Position souris
    console.log("Position Y:", event.clientY);
});

5. Propagation des événements

Bubbling (remontée)

L'événement remonte de l'élément enfant vers le parent :

<div id="parent">
    <button id="enfant">Cliquez</button>
</div>

<script>
document.getElementById("parent").addEventListener("click", () => {
    console.log("Parent cliqué");
});

document.getElementById("enfant").addEventListener("click", () => {
    console.log("Enfant cliqué");
});

// Clic sur le bouton affiche :
// "Enfant cliqué"
// "Parent cliqué"
</script>

stopPropagation()

Empêche la propagation :

enfant.addEventListener("click", function(event) {
    event.stopPropagation(); // Arrête la propagation
    console.log("Enfant cliqué");
});
// Maintenant seul "Enfant cliqué" s'affiche

6. preventDefault()

Empêche le comportement par défaut :

<a href="https://google.com" id="lien">Google</a>

<script>
document.getElementById("lien").addEventListener("click", function(event) {
    event.preventDefault(); // Empêche la navigation
    console.log("Lien cliqué mais pas de navigation");
});
</script>

Validation de formulaire

<form id="monForm">
    <input type="text" id="nom" required>
    <button type="submit">Envoyer</button>
</form>

<script>
document.getElementById("monForm").addEventListener("submit", function(event) {
    event.preventDefault(); // Empêche l'envoi

    let nom = document.getElementById("nom").value;
    if (nom.length < 3) {
        alert("Le nom doit contenir au moins 3 caractères");
    } else {
        alert("Formulaire valide !");
    }
});
</script>

7. Délégation d'événements

Attacher un événement au parent pour gérer les enfants :

<ul id="liste">
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
</ul>

<script>
document.getElementById("liste").addEventListener("click", function(event) {
    if (event.target.tagName === "LI") {
        console.log("Cliqué sur:", event.target.textContent);
    }
});
</script>

8. Exercice pratique

<!DOCTYPE html>
<html>
<head>
    <title>Exercice Événements</title>
</head>
<body>
    <button id="btn">Compteur: 0</button>
    <input type="text" id="texte" placeholder="Tapez quelque chose">
    <p id="affichage"></p>

    <script>
        // Compteur de clics
        let compteur = 0;
        let btn = document.getElementById("btn");

        btn.addEventListener("click", function() {
            compteur++;
            btn.textContent = "Compteur: " + compteur;
        });

        // Affichage en temps réel
        let input = document.getElementById("texte");
        let affichage = document.getElementById("affichage");

        input.addEventListener("input", function() {
            affichage.textContent = "Vous avez tapé: " + input.value;
        });

        // Détection de touche
        document.addEventListener("keydown", function(event) {
            if (event.key === "Escape") {
                console.log("Touche Échap pressée");
            }
        });
    </script>
</body>
</html>

Conclusion

Vous savez maintenant gérer les événements en JavaScript ! Dans le prochain chapitre, nous allons découvrir l'asynchronisme.

Évaluation des acquis

Quiz du chapitre 7

Correction immédiate
Q1 Quel événement se déclenche lorsque l'utilisateur clique sur un élément HTML ?
Q2 Quelle méthode est utilisée pour ajouter un écouteur d'événement à un élément en JavaScript ?
Ateliers pratiques & Projets

Testez vos compétences avec nos exercices guidés et le tuteur IA.

Ateliers pratiques & Corrigés détaillés

Ateliers pratiques & Corrigés

#1 — Sélection par ID
Atelier #1

Récupère l'élément HTML ayant l'ID 'monTitre' dans une variable.

Correction instantanée et bienveillante
Diagnostic du tuteur IA Weegosoft :
Consulter la solution type du formateur
Solution de référence :
const titre = document.getElementById("monTitre");
#2 — Modification de texte
Atelier #2

Change le texte d'un élément sélectionné pour qu'il affiche 'Nouveau Titre'.

Correction instantanée et bienveillante
Diagnostic du tuteur IA Weegosoft :
Consulter la solution type du formateur
Solution de référence :
titre.textContent = "Nouveau Titre";
#3 — Modification du CSS
Atelier #3

Change la couleur de fond d'un élément via JS pour la mettre en rouge.

Correction instantanée et bienveillante
Diagnostic du tuteur IA Weegosoft :
Consulter la solution type du formateur
Solution de référence :
titre.style.backgroundColor = "red";
#4 — Query Selector
Atelier #4

Sélectionne le premier paragraphe ayant la classe '.texte-bleu' avec querySelector.

Correction instantanée et bienveillante
Diagnostic du tuteur IA Weegosoft :
Consulter la solution type du formateur
Solution de référence :
const p = document.querySelector(".texte-bleu");
#5 — Création d'élément
Atelier #5

Crée une nouvelle balise <li> et ajoute-la à la fin d'une liste (ul).

Correction instantanée et bienveillante
Diagnostic du tuteur IA Weegosoft :
Consulter la solution type du formateur
Solution de référence :
const nouvelleLigne = document.createElement("li"); nouvelleLigne.textContent = "Nouvel élément"; document.querySelector("ul").appendChild(nouvelleLigne);
Besoin d'aide ?
Tuteur Virtuel
Bonjour ! Je suis votre tuteur virtuel. Comment puis-je vous aider avec ce cours aujourd'hui ?
Historique des conversations
Chargement...