Modèle DOM
Document Object Model
Définition
Lorsqu'une page Web est chargée (à partir des codes HTML et CSS), le navigateur crée ce que l'on appelle le Document Object Model (DOM) de la page.
Le modèle DOM est construit comme un arbre d’objets.
Le Document Object Model est la structure arborescente associée à tout document HTML. Exemple :
Source de l'image : https://wdi.centralesupelec.fr/appliouaibe/Cours/DOM
Le DOM définit les éléments HTML présents dans la page comme des objets de l'arbre.
Ces objets fournissent une interface entre les éléments de codes HTML/CSS et le langage JavaScript.
Le DOM définit en effet aussi :
- les propriétés des éléments HTML (exemple : contenu d'un élément);
- les méthodes des éléments HTML (action que l'on peut avoir sur l'élément, exemples : suppression d'un élément HTML, ajout d'un événement à un élément HTML).
On dit que le DOM est une Application Programming Interface (API) pour JavaScript.
A travers le DOM, JavaScript permet de :
- ajouter / supprimer / modifier des éléments HTML dans la page ;
- modifier les attributs des éléments HTML présents dans la page ;
- ajouter / supprimer / modifier les styles CSS des éléments HTML présents dans la page ;
- ajouter / supprimer / modifier et réagir à des événements associés à des éléments HTML de la page.
Sélection d'un élément HTML existant
Définition
JavaScript et le DOM permettent de sélectionner un élément de la page HTML à l'aide de plusieurs méthodes.
Sélection par l'identifiant
Définition
On peut sélectionner un élément HTML à l'aide de son identifiant via la méthode getElementById(nom_identifiant)
qui retourne l'objet associé à l'élément HTML dont l'identifiant est passé en argument.
Exemple
1 2 3 4 5 6 7 8 9 10 11 |
|
Ici :
document
désigne l’ensemble du document de la page web.getElementById(nom_identifiant)
est une méthode qui va récupérer le premier élément dont l’id estnom_identifiant
..textContent
est une propriété qui permet de remplacer le contenu de l'élément par ce qui suit le signe égal.
Application
Exercice 10
Tester le code précédent.
Expliquer précisément ce que réalise ce code.
Ajouter la ligne <p id="para"></p>
(après le titre de niveau h1
) au code HTML puis modifier le contenu (en Paragraphe
) de ce paragraphe en ajoutant une ligne au code Javascript.
Tester le code.
Exercice en plus : Différence entre innerHTML
et textContent
Tester, comprendre et expliquer le code ci-dessous :
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Sélection par la classe
Définition
On peut sélectionner un élément HTML à l'aide de sa classe (class name en anglais) via la méthode getElementsByClassName(nom_classe)
qui retourne l'ensemble des éléments HTML associés à la classe passée en argument.
Exemple
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
Application
Exercice 11
Sans le tester :
- Expliquer ce que réalise ce code précédent.
- Indiquer, selon vous, ce que signifient
[0]
et[1]
aprèsdocument.getElementsByClassName("para")
. - Représenter la page qui sera affichée par le navigateur.
- Ajouter une ligne afin de modifier le contenu du dernier paragraphe en
Nouveau paragraphe 3
. - Tester votre code.
Sélection par le sélecteur
Définition
On peut aussi citer les méthodes de sélection d'un élément HTML par sélecteur.
- La méthode
querySelector(selecteur)
qui retourne le premier élément HTML de la page correspondant au sélecteur fourni en argument :
Exemple
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Application
Exercice 12
Ajouter une ligne dans le code Javascript afin de modifier le contenu (en Super titre !
) du premier élément associé au sélecteur h1
.
- La méthode
querySelectorAll(selecteur)
retourne l'ensemble des éléments HTML correspondant au sélecteur fourni en argument.
Exemple
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
Modification d'un élément HTML existant
Définition
Pour modifier, depuis le langage JavaScript, une propriété (contenu, attribut ou propriété de style) d’un élément d'une page HTML / CSS, on utilise les syntaxes génériques suivantes :
-
Modification du contenu (entre les balises) d'un élément :
element.textContent = nouveau contenu HTML
-
Modification d'une propriété de style d'un élément :
element.style.propriété = nouveau style
-
Modification de la valeur d'un attribut d'un élément :
element.attribute = nouvelle valeur
Exemple concret
Soit le code HTML suivant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
Il est possible de sélectionner / modifier un élément à partir de son identifiant :
Code Javascript n°1
1 2 3 4 5 6 7 8 9 10 11 |
|
Il est possible de sélectionner / modifier un élément à partir de sa classe :
Code Javascript n°2
1 2 3 4 5 6 7 8 |
|
Remarque : Ici la boucle for
permet de parcourir l'ensemble des éléments elt
présent dans l'objet elt_zone2
dont la classe associée est class_zone2
.
Il est possible de sélectionner / modifier un élément à partir du sélecteur :
Code Javascript n°3
1 2 3 4 5 |
|
Code Javascript n°4
1 2 3 4 5 6 7 8 9 |
|
Application
Exercice 13
Tester les 4 codes Javascript proposés. Faire une capture d'écran de la page Web obtenu dans votre compte-rendu.
Exercice 14
Proposer un code JavaScript permettant d'obtenir le résultat ci-dessous à partir du code HTML fourni ci-dessous.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
Exercice 15
Soit le code suivant :
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Remplir la liste avec le contenu Elément n°1
, Elément n°2
etElément n°3
de trois façon :
- A la main, dans le code HTML ;
- En Javascript sans boucle
for
(on utilisera l'attributinnerHTML
afin de modifier le contenu HTML de l'élémentol
) ; - En Javascript, à l'aide d'une boucle
for
.
Exercice 16
Expliquer, avant de le tester, ce que fait selon vous le code suivant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|