V. Manipuler la page - Les grandes lignes du DOM
V-A. Représentation de la page
V-A-1. Propriétés des nœuds
V-A-1-a. Propriétés
V-A-1-b. Remarques sur innerHTML et nodeValue
V-A-2. Exemples d'arbres DOM sous divers navigateurs
V-A-2-a. Arborescence selon Firefox
V-A-2-b. Arborescence selon Firefox v2
V-A-2-c. Arborescence selon Internet Explorer v5
V-B. Création, insertion, suppression d'un nœud
V-B-1. Méthodes JavaScript pour la gestion des nœuds
V-B-2. Exemple
V-B-2-a. Arborescence du document
V-B-2-b. Création des éléments
V-B-2-c. Insertion des objets dans le document
V-C. Ajax
V-A. Représentation de la page
V-A-1. Propriétés des nœuds
V-A-1-a. Propriétés
V-A-1-b. Remarques sur innerHTML et nodeValue
V-A-2. Exemples d'arbres DOM sous divers navigateurs
V-A-2-a. Arborescence selon Firefox
V-A-2-b. Arborescence selon Firefox v2
V-A-2-c. Arborescence selon Internet Explorer v5
V-B. Création, insertion, suppression d'un nœud
V-B-1. Méthodes JavaScript pour la gestion des nœuds
V-B-2. Exemple
V-B-2-a. Arborescence du document
V-B-2-b. Création des éléments
V-B-2-c. Insertion des objets dans le document
V-C. Ajax
V. Manipuler la page - Les grandes lignes du DOM
V-A. Représentation de la page
V-A-1. Propriétés des nœuds
V-A-1-a. Propriétés
Le DOM (Document Object Model) est un modèle standardisé par le W3C (World Wide Web Consortium). Ce modèle propose de représenter un document sous la forme d'un arbre. Toutes les balises HTML sont donc des nœuds de l'arbre et les feuilles sont soit des balises sans contenu, soit le texte de la page HTML.
Popriétés | Commentaires |
---|---|
childNodes | nœuds enfants |
firstChild | premier nœud enfant |
lastChild | dernier nœud enfant |
nextSibling | prochain nœud d'un type (nœud de même niveau) |
parentNode | nœud parent |
previousSibling | nœud précédent d'un type (nœud de même niveau) |
nodeName | nom du nœud |
nodeValue | valeur / contenu du nœud |
nodeType | type du nœud (cf. ci-dessous) |
Types de nœuds :
1 - Nœud élément 2 - Nœud attribut 3 - Nœud texte 4 - Nœud pour CDATA 5 - Nœud pour référence d'entité 6 - Nœud pour entité | 7 - Nœud pour instruction de traitement 8 - Nœud pour commentaire 9 - Nœud document 10 - Nœud type de document 11 - Nœud de fragment de document 12 - Nœud pour notation |
V-A-1-b. Remarques sur innerHTML et nodeValue
innerHTML est une instruction qui permet de modifier le contenu d'une balise ou d'insérer un objet dans la page.
Insertion d'une image en utilisant innerHTML |
|
Une image sera insérée dans le paragraphe. Néanmoins, cette méthode présente quelques inconvénients lorsqu'il s'agit de modifier le contenu d'un formulaire (balise form). Lors de l'envoi du formulaire, les valeurs des objets créés via innerHTML ne sont pas toujours transmises au serveur. C'est pour cette raison qu'il est préférable d'utiliser les méthodes gérant les nœuds.
Insertion d'une image en utilisant nodeValue |
|
V-A-2. Exemples d'arbres DOM sous divers navigateurs
Soit une page Web définie par le code ci-dessous.
Représentation de la page Web |
|
V-A-2-a. Arborescence selon Firefox
La page ci-dessus est représentée sous Firefox selon ce schéma :
Arbre DOM de Firefox v1 |
|
Donc d'après cet arbre DOM, nous avons :
BODY | DIV (idP1) | DIV (idP2) | |
childNodes | #text (1) ; DIV ; #text (4) ; DIV ; #text (6) | H4 ; #text (2) ; SPAN ; #text ; A ; #text (3) | H4 ; #text (5) |
firstChild | #text (1) | H4 | H4 |
lastChild | #text (6) | #text (3) | #text (5) |
nextSibling | inexistant | #text (4) | #text (6) |
parentNode | HTML | BODY | BODY |
previousSibling | #text (0) | #text (1) | #text (4) |
V-A-2-b. Arborescence selon Firefox v2
Arbre DOM de Firefox v2 |
|
D'après cet arbre :
BODY | DIV (idP1) | DIV (idP2) | |
childNodes | #text (1) ; DIV (idP1) ; #text (6) ; DIV (idP2) ; #text (9) | #text (2) ; H4 ; #text (3) ; SPAN ; #text (4) ; A ; #text (5) | #text (7) ; H4 ; #text (8) |
firstChild | #text (1) | #text (2) | #text (7) |
lastChild | #text (9) | #text (5) | #text (8) |
nextSibling | inexistant | #text (6) | #text (9) |
parentNode | HTML | BODY | BODY |
previousSibling | HEAD | #text (1) | #text (6) |
V-A-2-c. Arborescence selon Internet Explorer v5
Internet Explorer supprime les nœuds vides au moment de la création de la page.
Arbre DOM d'Internet Explorer |
|
Donc d'après cet arbre, nous avons :
BODY | DIV (idP1) | DIV (idP2) | |
childNodes | DIV ; DIV | H4 ; #text (1) ; SPAN ; #text (2) ; A ; #text (3) | H4 ; #text (4) |
firstChild | DIV (idP1) | H4 | H4 |
lastChild | DIV (idP2) | #text (3) | #text (4) |
nextSibling | inexistant | DIV (idP2) | inexistant |
parentNode | HTML | BODY | BODY |
previousSibling | HEAD | inexistant | DIV (idP1) |
V-B. Création, insertion, suppression d'un nœud
V-B-1. Méthodes JavaScript pour la gestion des nœuds
Quelques fonctions permettant de gérer les nœuds du document.
Méthodes | Commentaires |
---|---|
createElement() | Méthode pour créer un nouvel élément HTML dans le document (div, p, span, a, form, input, etc...). |
createTextNode() | Méthode pour créer un nœud texte. |
appendChild() | Pour ajouter l'élément créé dans le document. L'élément sera ajouté comme étant le dernier nœud enfant d'un élément parent. |
insertBefore() | Pour ajouter l'élément créé avant un autre nœud. |
removeChild() | Pour supprimer un nœud. |
V-B-2. Exemple
Soit un formulaire dans lequel on trouve un groupe d'éléments :
- trois textes : « Votre texte » ; « Vos options » ; « La suite »
- deux boîtes de textes ;
- une liste d'options.
ET un bouton qui permet d'ajouter à ce formulaire un nouveau groupe d'éléments identique au précédent. Ce nouveau groupe sera inséré avant le bouton.
Aspect final du formulaire :
Aspect final du formulaire
V-B-2-a. Arborescence du document
Arborescence du document HTML |
|
V-B-2-b. Création des éléments
Dans un premier temps nous allons créer tous les éléments qui seront dans la page :
Création de deux input de type texte.
Nous utilisons la fonction createElement().
Nous utilisons la fonction createElement().
Syntaxe de la méthode createElement() |
|
Création des input de type text |
|
Création des trois textNode « Votre texte » ; « Vos options » ; « La suite » : nous utilisons la fonction createTextNode().
Syntaxe de la méthode createTextNode() |
|
Création des textNode |
|
Création de la liste déroulante : le code ci-dessous ne permet de créer que la balise select. Nous verrons plus loin comment créer et ajouter les options à la liste.
Création de la liste déroulante |
|
Création des options de la liste déroulante.
Les options sont des objets de la liste. Pour les créer nous n'utilisons pas la méthode createElement(). Nous allons créer ces objets en utilisant la syntaxe suivante :
Les options sont des objets de la liste. Pour les créer nous n'utilisons pas la méthode createElement(). Nous allons créer ces objets en utilisant la syntaxe suivante :
Créer une option |
|
NB. | Les objets sont créés mais ne sont pas ajoutés à la liste pour autant. |
Création des options d'une liste |
|
Création d'une ligne pour séparer chaque groupe. Une feuille de style s'appliquera sur cette ligne.
Création d'une ligne |
|
V-B-2-c. Insertion des objets dans le document
Maintenant nous allons ajouter ces éléments au document. Ces éléments seront ajoutés dans le formulaire juste au-dessus du bouton "Ajouter un élément". Nous allons avoir besoin de l'objet formulaire (élément parent) et de l'objet bouton (référence).
La fonction utilisée est insertBefore(e1, e2) avec :
- e1 : le nouvel élément enfant à insérer ;
- e2 : un élément enfant avant lequel le nouvel élément enfant doit être inséré.
Ajout des éléments dans le document |
|
(1) Internet Explorer : il faut insérer le select dans le document avant d'ajouter les options. |
V-C. Ajax
AJAX est une méthode de programmation des pages Web qui s'appuie sur des scripts JavaScript en utilisant l'objet xmlHttpRequest (aussi appelé XHR). Celui-ci permet de réaliser des requêtes vers le serveur de manière asynchrone et ainsi de mettre à jour tout ou partie du contenu d'une page Web.
Aucun commentaire:
Enregistrer un commentaire