đ SAISON A Semaine 5 Ăpisode 1 - Le DOM
đ Notions du jour
- DOM (Document Object Model),
- Expliquer le principe du DOM,
- AccĂ©der Ă un Ă©lĂ©ment de la page en JS (getElement(s)By, querySelectorâŠ),
- Modifier un élément de la page (objet HTMLElement),
- Créer un élément,
- Insérer un élément dans un autre,
- Utiliser la documentation pour connaitre les actions possibles avec un élément.
đ Le DOM : Le Lien Magique entre HTML et JavaScript
Aujourdâhui, jâai plongĂ© dans lâun des concepts les plus fondamentaux du dĂ©veloppement web : le DOM, ou Document Object Model. En gros, le DOM est une reprĂ©sentation en mĂ©moire de la structure de votre page HTML, sous forme dâun arbre dâobjets. Chaque balise HTML (un <div>, un <p>, etc.) devient un nĆud dans cet arbre, et JavaScript peut interagir avec ces nĆuds pour modifier dynamiquement la page.
Pourquoi câest puissant ? Sans le DOM, JavaScript ne pourrait pas rĂ©agir aux actions de lâutilisateur (clics, saisiesâŠ) ni mettre Ă jour le contenu sans recharger la page. Câest la base des applications web dynamiques !
đ AccĂ©der aux ĂlĂ©ments : Les SĂ©lecteurs, ces ClĂ©s dâAccĂšs
Pour manipuler un Ă©lĂ©ment, il faut dâabord le cibler. JavaScript offre plusieurs mĂ©thodes :
getElementById(): RécupÚre un élément par son ID (unique).
getElementsByClassName(): RĂ©cupĂšre une liste dâĂ©lĂ©ments par leur classe.querySelector(): Utilise des sĂ©lecteurs CSS pour cibler un Ă©lĂ©ment (le premier trouvĂ©).
querySelectorAll(): CommequerySelector, mais retourne tous les éléments correspondants.
đĄ Astuce : querySelector est ultra-flexible et permet des sĂ©lections complexes, comme div > p.highlight.
âš Modifier un ĂlĂ©ment : LâObjet HTMLElement
Une fois lâĂ©lĂ©ment ciblĂ©, on peut lire ou modifier ses propriĂ©tĂ©s et son contenu :
- Contenu texte :
element.textContentouelement.innerHTML(attention, ce dernier interprÚte le HTML. Il peut insérer des balises<script>et ainsi laisser la porte ouverte pour une attaque XSS. Préférer l'utilisation deelement.innerText). - Attributs :
element.setAttribute("class", "class-name"),element.classList("class-name"),element.id = "id-name". - Styles :
element.style.color = "red".
Exemple :
const button = document.querySelector("button");
bouton.textContent = "Click Me!";
bouton.style.backgroundColor = "#4CAF50";
đ ïž CrĂ©er et InsĂ©rer des ĂlĂ©ments : Construire la Page Dynamiquement
JavaScript permet de créer des éléments et de les ajouter à la page :
- Créer un élément :
-
LâinsĂ©rer dans le DOM :
-
parent.appendChild(newParagraph): Ajoute l'Ă©lĂ©ment en tant qu'enfant de l'Ă©lĂ©ment parent ciblĂ©. parent.insertBefore(newParagraph, elementReference): InsĂšre un nĆud avant un nĆud de rĂ©fĂ©rence en tant qu'enfant d'un nĆud parent spĂ©cifiĂ©.
đĄ Cas pratique : Ajouter une liste dâitems gĂ©nĂ©rĂ©e dynamiquement Ă partir dâun tableau JavaScript.
đ La Documentation : Le Guide Ultime
Le DOM est vaste, et personne ne retient tout ! La documentation MDN est une mine dâor :
- Elle liste toutes les propriĂ©tĂ©s et mĂ©thodes disponibles pour chaque type dâĂ©lĂ©ment.
- Exemples concrets et compatibilité navigateur.
đĄ Conseil : Apprendre Ă chercher efficacement dans la doc. Par exemple, taper "MDN HTMLElement" pour explorer les mĂ©thodes dâun Ă©lĂ©ment.
đŻ Ce Que Je Retiens
- Le DOM est une interface entre HTML et JavaScript.
- Les sélecteurs (
querySelector,getElementById) sont essentiels pour cibler des éléments. - On peut lire, modifier, créer, et supprimer des éléments dynamiquement.
- La documentation est indispensable pour découvrir les possibilités.
Prochaine étape : Explorer les événements (addEventListener) pour rendre mes pages interactives !
âšïž Challenge du jour
đČ Dice roller
đŻ But du Challenge
CrĂ©er une application web interactive permettant de simuler le lancer de dĂ©s đČđČ en JavaScript. Lâobjectif est de gĂ©nĂ©rer visuellement un ou plusieurs dĂ©s, dont la face est dĂ©terminĂ©e alĂ©atoirement, et dâafficher ces dĂ©s dans lâinterface utilisateur. En bonus, le challenge propose dâajouter un adversaire (un deuxiĂšme joueur virtuel) pour comparer les lancers.
đ Lien avec les Notions du Jour
Ce challenge met en pratique toutes les notions clĂ©s du DOM apprises aujourdâhui :
- CrĂ©ation dâĂ©lĂ©ments HTML (
div) via JavaScript. - Manipulation des classes et styles pour appliquer des styles CSS existants et afficher un sprite (image composite).
- Insertion dâĂ©lĂ©ments dans le DOM pour afficher les dĂ©s dans des zones spĂ©cifiques de la page.
- Modification dynamique des propriĂ©tĂ©s CSS (comme la position de lâarriĂšre-plan) pour changer la face du dĂ©.
- Interaction avec lâutilisateur via
promptpour personnaliser le nombre de dés lancés. - Utilisation de la documentation pour comprendre comment manipuler les éléments et leurs propriétés (comme
background-position).
đ Ătapes Ă RĂ©aliser
- CrĂ©ation dâun DĂ© en JavaScript
- GĂ©nĂ©ration dâun Nombre AlĂ©atoire et Affichage de la Face du DĂ©
- Lancer Plusieurs Dés
- Bonus : Ajouter un Adversaire
đ» Langage de Programmation UtilisĂ©
Le challenge est entiĂšrement rĂ©alisĂ© en JavaScript, avec une interaction directe avec le DOM pour manipuler les Ă©lĂ©ments HTML et CSS. Le HTML et CSS sont fournis (ou peuvent ĂȘtre gĂ©nĂ©rĂ©s dynamiquement en JavaScript pour sâentraĂźner), mais la logique principale repose sur JavaScript. L'image stripe (contenant toutes les faces d'un dĂ©, chaque face faisant 100px de largeur) Ă manipuler pour afficher les dĂ©s est Ă©galement fournie.
đ§âđ» Ma proposition de code pour ce challenge
Résultat attendu.
