Aller au contenu principal
ShadowAcademy

Les langages Projet : un site complet L interactivité (JavaScript)

Donner vie à la page

Le JavaScript du festival suit toujours le même schéma :

  1. écouter un événement (un clic, un envoi) ;
  2. décider de ce qui change ;
  3. changer une classe ou un attribut -- et laisser le CSS dessiner.

Un menu accessible

<button id="menu" aria-expanded="false" aria-controls="navigation">Menu</button>

aria-expanded dit aux lecteurs d'écran si le menu est ouvert. Le script le tient à jour en même temps que la classe :

const ouvert = navigation.classList.toggle("ouvert");
bouton.setAttribute("aria-expanded", String(ouvert));

toggle renvoie true si la classe vient d'être ajoutée.

Parcourir plusieurs éléments

for (const carte of document.querySelectorAll(".programme .carte")) {
    const visible = choix === "tous" || carte.dataset.categorie === choix;
    carte.classList.toggle("cache", !visible);
}

Avec un second argument, toggle(classe, condition) ajoute la classe si la condition est vraie et la retire sinon : pas besoin de if.

Un seul écouteur pour plusieurs boutons

document.querySelector(".filtres").addEventListener("click", (e) => {
    const bouton = e.target.closest("button");
    if (!bouton) return;
    ...
});

Un clic sur un bouton remonte jusqu'à ses parents : un seul écouteur sur le conteneur suffit. C'est la délégation d'événements.

Les données de l'utilisateur

Tout ce qui vient d'un champ s'insère avec textContent, jamais avec innerHTML : un nom comme <img onerror=...> doit s'afficher tel quel, pas s'exécuter.

3 exercices pour cette lecon

Les exercices demandent un compte : il faut bien enregistrer votre progression quelque part. La lecture, elle, reste libre. Creer un compte

  • Le menu facile lecon a valider
  • Filtrer le programme moyen lecon a valider
  • Les inscriptions difficile lecon a valider