Académique Documents
Professionnel Documents
Culture Documents
Apprenez À Programmer Avec Javascript: Récupérez Un Élément D'Une Page Web
Apprenez À Programmer Avec Javascript: Récupérez Un Élément D'Une Page Web
● Choisir la langue
● Aller à la recherche
1. Accueil
2. Cours
3. Apprenez à programmer avec JavaScript
4. Récupérez un élément d’une page web
Pour appréhender cette étape, vous devez donc maîtriser les fondamentaux du
langage HTML. Si ce n’est pas le cas, je vous conseille fortement de suivre le
cours Créez votre site web avec HTML 5 et CSS 3.
Notre première étape, dans ce chapitre, est d’établir un lien entre le code HTML et
le code JavaScript. Cela nous permettra, dans le chapitre suivant, de modifier le
😉
code HTML directement depuis notre code JavaScript. Alors, avant de rentrer dans
le vif du sujet, regardons ensemble comment une page web est structurée !
<body>
<header>
<h1>AzerType</h1>
</header>
<main>
<div>
<h2>Le jeu</h2>
<p>Un petit texte</p>
</div>
<div>
<h2>Une autre div</h2>
<p>Un autre texte</p>
</div>
</main>
<footer>
@Copyright : OpenClassrooms.
</footer>
</body>
Ce code HTML est simple. Il est constitué d’un header avec un titre, d’un corps
(main) et d’un footer.
Ce code est un peu structuré comme un arbre, c’est pourquoi on appelle cette
structure l’arbre DOM (Document Object Model, ou modèle objet du document, en
français). En fait, JavaScript ne lit pas une page HTML comme du simple texte. Il la
représente comme une structure organisée en parents/enfants, et composée de
nœuds qui représentent des balises.
En développement informatique, on dit que header, main et footer sont les noeuds
enfants de body, et que body est le parent de ces nœuds.
Chaque nœud de cet arbre DOM (header, main, div…) est un objet HTMLElement.
Pour le dire autrement, JavaScript a regroupé dans un même objet deux choses :
● les informations sur cet objet (son nom, son id, sa position, etc.) : ce sont les
propriétés de l’objet ;
● ce que cet objet est capable de faire (réagir au clic, par exemple) : ce sont les
méthodes.
😃
d’autres. Si vous voulez en savoir plus, la documentation est à votre disposition.
● getElementById ;
● querySelector ;
● querySelectorAll.
Il existe bien sûr d’autres méthodes, et je vous invite d’ailleurs à les découvrir par
vous-même. L’essentiel est de choisir la méthode la plus adaptée à la
problématique suivante : cibler le ou les éléments qui nous intéressent au milieu
d’une page HTML souvent très conséquente.
Pour cela, nous pouvons commencer par créer une div dans le HTML. Pour la
distinguer des autres, nous lui fournissons un id :
<body>
<div id="zoneProposition">Cachalot</div>
</body>
Pour accéder à cette balise, nous allons donc écrire :
let baliseZoneProposition =
document.getElementById("zoneProposition");
console.log(baliseZoneProposition);
Ici, nous avons demandé à JavaScript, depuis document, donc toute la page :
“Trouve-moi un élément HTML qui a pour id zoneProposition”. Puis nous avons mis
le résultat dans la variable baliseZoneProposition.
Cette variable est un objet de type HTMLElement. Si nous cliquons sur le petit
triangle à côté de cette div pour déployer le contenu, les détails de cet objet
HTMLElement vont s’afficher, comme dans la capture d’écran ci-dessous.
Détail d’un objet HTMLElement
Enfin, comme pour n’importe quel objet en JavaScript, vous pouvez accéder aux
propriétés de votre nœud grâce au point “.” .
Par exemple, pour afficher la hauteur de l’élément dans votre console, vous
pouvez écrire :
console.log(baliseZoneProposition.clientHeight);
Récupérez un élément QuerySelector
😃
les sélecteurs CSS. En gros, si vous savez désigner un élément en CSS, alors il
vous suffit de reprendre exactement la même syntaxe !
<body>
<div id="zoneProposition">
Entrez le mot : <span>Cachalot</span>
</div>
</body>
Pour mettre le mot Cachalot en gras en CSS, nous aurions écrit :
#zoneProposition span {
font-weight: bold;
}
Ce code signifie : “Il faut mettre la police d’écriture en gras pour tous les span
contenus dans un élément qui a l’id zoneProposition.”
querySelector nous permet de trouver le premier élément qui correspond au
sélecteur CSS proposé :
let baliseZonePropositionSpan =
document.querySelector("#zoneProposition span");
console.log(baliseZonePropositionSpan);
Et voilà le résultat dans la capture d’écran ci-dessous : nous voyons dans la console
que nous avons bien trouvé notre span.
Notez que # est présent devant l’id, comme on l’écrirait en CSS, alors que ce #
n’était pas nécessaire avec getElementById.
Ici, le principe est le même que pour tous les éléments dans une liste de type
NodeList (ou liste de nœuds, en français).
<body>
<div class="zoneChoix">
<input type="radio" name="optionSource" id="mots"
value="1" checked>
<label for="mots">Mots</label>
<input type="radio" name="optionSource" id="phrases"
value="2">
<label for="phrases">Phrases</label>
</div>
<div class="zoneProposition">
Entrez le mot : <span>Cachalot</span>
</div>
</body>
Dans ce code, j’ai ajouté une nouvelle div avec la classe zoneChoix. Cette div
contient deux inputs de type radio.
Pour récupérer tous les inputs de type radio d’un seul coup, je peux donc écrire :
console.log(listeInputRadio);
Notez que j’ai écrit .zoneChoix et pas #, car ici, j’ai mis une classe à ma div et pas
un id.
Nous voyons bien ici notre NodeList. Pour reprendre l’image de l’arbre DOM,
JavaScript a sélectionné dans cet arbre les nœuds qui correspondent à notre
sélecteur CSS.
Nous allons devoir parcourir les différents éléments de cette liste un par un pour y
accéder. Nous utiliserons donc une boucle :
}
Et voilà le résultat, nous retrouvons bien le détail de tous nos éléments :
Récapitulons en vidéo
Retrouvez les démonstrations de ce chapitre dans la vidéo ci-dessous :
À vous de jouer !
Dans cet exercice, je vous propose de récupérer plusieurs éléments dont nous
aurons besoin dans le chapitre suivant, lorsque nous procéderons à la modification
de la page.
Comme j’aime vous faciliter la vie, j’ai modifié légèrement le projet et réalisé la
partie HTML/CSS pour cet exercice. Vous la trouverez ici.
N’oubliez pas de vérifier que la sélection est correcte à chaque fois, en utilisant un
console.log !
Corrigé
Vous pouvez vérifier votre travail en consultant le corrigé et la vidéo ci-dessous :
En résumé
● Une page web est constituée de balises HTML, et repose sur une structure
que l’on appelle DOM. Cette structure permet de relier les balises entre elles.
● Pour récupérer un élément du DOM :
○ utilisez defer dans l’inclusion de vos fichiers JS pour retarder leur prise
en compte, afin que la variable document ait le temps d’être créée ;
○ partez du point d’entrée du DOM : la variable document ;
○ utilisez les méthodes adaptées : getElementById, querySelector ou
querySelectorAll.
Bravo, vous avez franchi la première étape pour modifier le contenu de votre page
HTML. Vous savez désormais récupérer des HMLTElements pour les manipuler
depuis votre code ! Dans le prochain chapitre, nous allons modifier la page en
ajoutant des éléments, ou en modifiant les classes CSS !