
Salut Arthur, très bien et toi?

Ah, effectivement c'est un concept qui peut paraitre un peu compliqué au premier abord, mais en fait c'est assez simple.

Hum, tu es sûr d'avoir bien compris le concept? Expliques moi ce que c'est le DOM.

Ce que tu dit n'est pas franchement faux, mais c'est extrêmement réducteur, c'est bien plus que ça le DOM. Déjà le mot en lui même DOM tu sais ce que ça signifie?

C'est pour Document Object Model, et ça porte bien son nom. En fait le DOM c'est quelque chose qui est construit par le navigateur. Quand tu lui demandes d'afficher du contenu d'un fichier HTML et de CSS associés, il ne sait pas l'afficher tel quel, il a besoin d'interpréter les fichiers pour les comprendre et au fur et à mesure qu'il les lit, il construit ce DOM, un très gros objet qui contiens tout le contenu de ta page. Et ce très gros objet, tu l'as déjà utilisé si tu as déjà fait du javascript, il s'agit de l'objet "document".

Oui, et c'est un objet très complet qui comporte énormément de propriétés, comme la propriété style qui contiens tous le css associé et à appliquer au document, le contenu à afficher, mais aussi la liste des enfants direct qui eux même possèdent à leur tour de nombreuses propriétés, de style, de contenu et d'autres enfants ainsi de suite jusqu'à arriver à la fin du contenu HTML.

Et ce qu'il y a de pratique avec ce DOM, c'est que c'est ce qui sert à afficher la page sur le navigateur. Mais on peut le manipuler en javascript, que ce soit pour récupérer des éléments précis, modifier leur style, leurs classes, leur contenu, les supprimer, en ajouter et en fait, faire toute ce que l'on veut. Et tout changement de cet objet s'affichera directement sur la page actuelle.

C'est exactement ça, les méthodes getElement(s)By et querySelector sont des moyens de récupérer des éléments du DOM, pour les manipuler ensuite.

Il y a deux méthodes très différentes qui permettent d'arriver au même résultat, chacune a ses avantages et inconvénients, on va voir déjà comment implémenter ces deux méthodes, et ensuite je t'expliquerai ces différences pour savoir laquelle choisir selon les cas. J'ai terminé cette partie