Examen
Consignes
Avec les fichiers fournis sur Moodle (index.hml, bootstrap.min.css,
styles.css), cette page et les enseignements vu en cours (et rien d'autre : pas d'IA,
pas de support de cours, pas d'exercices faits en cours), reproduire les
comportements suivants, visibles sur cette page :
Ouverture de la navigation
- Le bouton en haut à droite de la page doit ouvrir la navigation ;
- La fermer si elle est ouverte (on a fait tout ça en cours 👌).
La navigation est encadrée par les commentaires <-- Navigation principale --> dans
le html.
Rollover sur les cartes
- Au survol (mouseover) avec la souris, les cartes doivent avoir un effet (évidemment réalisé avec l'aide de JS, mais peut être fait en combinaison avec CSS) ;
- À la sortie de la souris (mouseout), les cartes doivent perdre cet effet (on l'a aussi vu en cours 😎🤙).
Voir les infos
Au clic sur le bouton View de chaque carte de la grille ci-dessous :
- Affichage de la zone des informations de la même carte, présente par défaut dans le code de
la page et encadrée par les commentaires
<-- Infos étudiant --><-- /Infos étudiant --> - Elle est stylée en CSS pour être masquée avec la classe
hidden(et visible sans). - Quand la zone d'informations est visible, le bouton
Viewreçoit l'état actif (classeactive). - Un nouveau clic sur le bouton ferme la zone et supprime l'état actif du bouton.
Ça semble familier ? Vu en cours ! 🤙
Éditer les infos
Chaque bouton Edit fait la même chose ET rend la zone d'informations
éditable
(attribut contenteditable="true")
Ok, pas vu en co… MAIS SI. 🤩
Classes CSS disponibles
show: affiche un élément autrement masquéhidden: masque un élément autrement visibleover: ajoute un effet de grossissement (qui pourrait servir d'effet au survol…)
Rappels
Pour rappel, les enseignements de nos cours :
- Bases : ⚠️ syntaxe, console ouverte (TOUT. LE. TEMPS.),
- Types de données : String, Number, Boolean, [Array], {Object}
- Variables : const VS let
- Conditions : if, else if, else
- Opérateurs : = ≠ ==
- Fonctions : déclaration, exécution (appel), paramètres
- DOM : sélectionner, modifier (texte, contenu HTML, attributs, classes)
- Évènements : qui - quoi - pour quoi (action)
- Boucles : for, for…of
Syntaxe
Fonctions
function saluer(nom) { console.log("Bonjour " + nom); }
saluer("Maria");
DOM
document.getElementById("id")
document/element.querySelector("selecteur")
document/element.querySelectorAll("selecteur")
element.setAttribute("nom-de-l-attribut", "valeur-de-l-attribut")
element.getAttribute("nom-de-l-attribut")
element.removeAttribute("nom-de-l-attribut")
element.classList.add("nom-de-la-classe")
element.classList.remove("nom-de-la-classe")
element.classList.contains("nom-de-la-classe")
element.classList.toggle("nom-de-la-classe")
Évènements
element.addEventListener("évènement", function () { … });
Boucles
for (let i = 0; i < 3; i++) {
console.log(i);
}
for (let item of tableau) {
console.log(item);
}
Exemple
const elements = document.querySelectorAll(".element");
for (let element of elements) {
element.addEventListener…
element.classList…
}
Donne-moi la force (recueil de citations inspirantes) 💪🏻
Développer en Javascript sans la console ouverte, c'est comme courir sans baskets
Faites des
console.log();
J'ai toujours vu Javascript comme un montage de meuble : on crée un ensemble étape par étape , comme on fait une recette de cuisine étape par étape, pas tout d'un coup.
Quand je sèche, je prends un papier et je dessine ou je prends des notes : traduire le code en langue intelligible, c'est la moitié du travail. L'autre moitié, c'est les révisions. Et la dernière moitié le talent.
Parfois, pour se retrouver soi-même, il faut savoir s'éparpiller un peu partout :
console.log("ICI"),console.log("LÀ"). C'est en balisant son propre chaos qu'on finit par voir la lumière. Et faites desconsole.log();.
J'ai toujours cru que commenter mon code pour décrire la logique de ce que je voulais faire pouvait valoir des points à un examen. Et c'était vrai.
La console est un murmure discret que personne n'écoute. Si tu veux vraiment que la vie t'écoute, fais-lui surgir un message de log en plein visage. C'est brutal, mais au moins, on ne peut pas t'ignorer. Et faites des
console.log(), bordel.
Bonus 🎖️
Si les comportements précédents fonctionnent bien, commencez par relire votre code, tester les différents cas, essayez de simplifier, d'éviter les répétitions, … puis s'il vous reste du temps passez au bonus.
⚠️ Attention à ne pas casser quelque chose en vous lançant là-dedans dans les dernières minutes…
- Ajouter un étudiant à la grille en cliquant sur le bouton (code commenté préfixé par le message
Le bouton pour ajouter un étudiant) depuis le fichierstudents.jsdisponible sur Moodle ; les boutonsViewetEditdoivent être fonctionnels. - Lister les hobbies dans la zone d'informations sous forme de liste.
- Ajouter un
<select>qui filtre les étudiants par pays. (code commenté préfixé par le messageLe formulaire de filtre pays pour les points bonus). Les étudiants déjà présents au chargement peuvent être exclus des résultats. - Ajouter un
<select>qui filtre les étudiants par hobbies. (code commenté préfixé par le messageLe formulaire de filtre hobbies pour les points bonus). Les étudiants déjà présents au chargement peuvent être exclus des résultats. - Créer un algorithme qui donne les numéros du Loto.
- Freddie Starlight
- 21 ans
- Axl Rosewood
- 24 ans
- Mick Stone
- 22 ans
- Dave Grohlsen
- 21 ans
- Bruce Springfield
- 23 ans
- Kurt Cobainville
- 24 ans