JavaScript : rendre le Web interactif (école d'ingénieur) · Chapitre 8 · Application directe du cours
Dans quel ordre ?
Événements et formulaires · niveau 2
Énoncé
Avec la page et le script suivants, qu'affiche la console après un clic sur le bouton ? Et après un clic sur la carte, hors du bouton ?
<section id="rayon">
<article id="carte">
<button type="button" id="ajouter">Ajouter</button>
</article>
</section>
const rayon = document.querySelector("#rayon");
const carte = document.querySelector("#carte");
const ajouter = document.querySelector("#ajouter");
rayon.addEventListener("click", () => console.log("A rayon"));
carte.addEventListener("click", (e) => console.log("B carte", e.target.id));
ajouter.addEventListener("click", () => console.log("C bouton"));
rayon.addEventListener("click", () => console.log("D rayon (capture)"), { capture: true });
carte.addEventListener("click", (e) => {
console.log("E carte, arrêt");
e.stopPropagation();
});
document.addEventListener("click", () => console.log("F document"));Corrigé
--- clic sur le bouton
D rayon (capture)
C bouton
B carte ajouter
E carte, arrêt
--- clic sur la carte, hors du bouton
D rayon (capture)
B carte carte
E carte, arrêt
Clic sur le bouton : la capture descend et ne rencontre qu'un écouteur de capture, D sur la section ; puis la cible, C ; puis la remontée : sur la carte, B puis E, dans l'ordre d'enregistrement (e.target reste le bouton) ; E arrête la propagation, donc ni A ni F ne sont appelés. Clic sur la carte : même trajet, sans le bouton ; la cible est la carte elle-même. L'arrêt de propagation de E empêche ici le document (F) d'être prévenu : un menu qui se fermerait « au clic ailleurs » ne fonctionnerait plus. C'est pourquoi on évite stopPropagation.
100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.