Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
sio2:le_document_object_model [2024/10/17 22:53] – [Propriétés des éléments] dthevenot | sio2:le_document_object_model [2024/10/18 08:52] (Version actuelle) – [Propriétés des éléments] dthevenot | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ~~SLIDESHOW~~ | ||
====== Model (DOM) ====== | ====== Model (DOM) ====== | ||
{{ : | {{ : | ||
Javascript permet d’agir sur les propriétés des éléments d’un document HTML, mais aussi de manipuler l’arbre DOM. Le Document Object Model (en français modèle d’objets de document), abrégé en DOM, est une interface de programmation normalisée permettant de structurer des documents HTML et XML. Ce sont les navigateurs utilisés par les internautes pour accéder aux offres du Web, qui exploitent l’interface normalisée : la plupart des clients Web utilise le DOM ou des interfaces basées sur le DOM, pour générer des pages HTML ou XML. | Javascript permet d’agir sur les propriétés des éléments d’un document HTML, mais aussi de manipuler l’arbre DOM. Le Document Object Model (en français modèle d’objets de document), abrégé en DOM, est une interface de programmation normalisée permettant de structurer des documents HTML et XML. Ce sont les navigateurs utilisés par les internautes pour accéder aux offres du Web, qui exploitent l’interface normalisée : la plupart des clients Web utilise le DOM ou des interfaces basées sur le DOM, pour générer des pages HTML ou XML. | ||
+ | ===== ===== | ||
L’épine dorsale d’un document HTML est constituée de balises. Le Document Object Model reste pertinent comme présentation orientée objet d’un document Web. Il a aussi son intérêt comme interface pour l’ensemble des contenus dynamiques programmés, | L’épine dorsale d’un document HTML est constituée de balises. Le Document Object Model reste pertinent comme présentation orientée objet d’un document Web. Il a aussi son intérêt comme interface pour l’ensemble des contenus dynamiques programmés, | ||
+ | ===== ===== | ||
Selon le modèle d’objets de document (DOM), chaque balise HTML est un objet. Les balises imbriquées sont des “enfants” de celle qui les entoure. Le texte à l’intérieur d’une balise est également un objet. | Selon le modèle d’objets de document (DOM), chaque balise HTML est un objet. Les balises imbriquées sont des “enfants” de celle qui les entoure. Le texte à l’intérieur d’une balise est également un objet. | ||
Tous ces objets sont accessibles via JavaScript, et nous pouvons les utiliser pour modifier la page. | Tous ces objets sont accessibles via JavaScript, et nous pouvons les utiliser pour modifier la page. | ||
+ | ===== ===== | ||
Par exemple, document.body est l’objet représentant la balise < | Par exemple, document.body est l’objet représentant la balise < | ||
Ligne 16: | Ligne 17: | ||
</ | </ | ||
===== L’arbre DOM (Document Object Model) ===== | ===== L’arbre DOM (Document Object Model) ===== | ||
- | Structure arborescente. | ||
- | |||
Tout document HTML peut être représenté sous une forme arborescente | Tout document HTML peut être représenté sous une forme arborescente | ||
Exemple : | Exemple : | ||
Ligne 34: | Ligne 33: | ||
</ | </ | ||
</ | </ | ||
+ | ===== ===== | ||
Le code HTML généré par le DOM-Tree se présente donc ainsi : | Le code HTML généré par le DOM-Tree se présente donc ainsi : | ||
+ | ===== ===== | ||
Sur cet arbre, on distingue le nœud racine (html), puis des autres noeuds intermédiaires et des nœuds feuilles. Sous un nœud, sont situés ses descendants(child). | Sur cet arbre, on distingue le nœud racine (html), puis des autres noeuds intermédiaires et des nœuds feuilles. Sous un nœud, sont situés ses descendants(child). | ||
Ligne 41: | Ligne 41: | ||
Les nœuds p et div sont des nœuds frères (siblings). Ils se suivent de gauche à droite, selon leur ordre d’apparition dans le document. | Les nœuds p et div sont des nœuds frères (siblings). Ils se suivent de gauche à droite, selon leur ordre d’apparition dans le document. | ||
+ | ===== ===== | ||
Autre représentation du DOM : | Autre représentation du DOM : | ||
< | < | ||
Ligne 57: | Ligne 57: | ||
- ---- img | - ---- img | ||
</ | </ | ||
+ | ===== ===== | ||
Les sélecteurs utilisés en CSS ou en javascript, vont pouvoir utiliser les propriétés du DOM afin de définir la cible du traitement à effectuer. | Les sélecteurs utilisés en CSS ou en javascript, vont pouvoir utiliser les propriétés du DOM afin de définir la cible du traitement à effectuer. | ||
- | * Pour voir une structure DOM : https:// | + | => Explorer le DOM avec les outils de développement du navigateur |
- | * Explorer le DOM avec les outils de développement du navigateur | + | |
- | ===== Ressources et compléments | + | ==== Ressources et compléments ==== |
https:// | https:// | ||
https:// | https:// | ||
Ligne 72: | Ligne 72: | ||
* Par son attribut classe : **var classList = document.getElementsByClassName(" | * Par son attribut classe : **var classList = document.getElementsByClassName(" | ||
* Par sa balise : **var lesDiv = document . getElementsByTagName (" | * Par sa balise : **var lesDiv = document . getElementsByTagName (" | ||
+ | ===== ===== | ||
* Par un sélecteur css : **var element = document.querySelector(" | * Par un sélecteur css : **var element = document.querySelector(" | ||
* querySelector retourne le 1er élément correspondant au sélecteur | * querySelector retourne le 1er élément correspondant au sélecteur | ||
Ligne 77: | Ligne 78: | ||
__Remarque :__ // | __Remarque :__ // | ||
+ | ===== ===== | ||
==== Propriétés des éléments ==== | ==== Propriétés des éléments ==== | ||
- | |||
Les éléments obtenus par sélection possèdent des propriétés manipulables : attributs, contenu, style css. | Les éléments obtenus par sélection possèdent des propriétés manipulables : attributs, contenu, style css. | ||
=== Manipuler les attributs === | === Manipuler les attributs === | ||
Ligne 86: | Ligne 86: | ||
* L' | * L' | ||
La valeur obtenue peut-être de type string, number ou boolean. | La valeur obtenue peut-être de type string, number ou boolean. | ||
+ | ===== ===== | ||
Il est également possible d' | Il est également possible d' | ||
Ligne 96: | Ligne 96: | ||
var monImage = document.getElementById(" | var monImage = document.getElementById(" | ||
photo.src =" | photo.src =" | ||
- | photo.alt = La Joconde"; | + | photo.alt = "La Joconde"; |
</ | </ | ||
+ | ===== ===== | ||
=== Manipuler le contenu === | === Manipuler le contenu === | ||
Ligne 104: | Ligne 104: | ||
La propriété **textContent** représente le contenu textuel d'un élément. | La propriété **textContent** représente le contenu textuel d'un élément. | ||
+ | ===== ===== | ||
=== Agir sur les propriétés css === | === Agir sur les propriétés css === | ||
La propriété **style** d'un élément permet de modifier les propriétés css pour cet élément. Elles sont accessibles par leur nom converti en camelback (ainsi font-size devient fontSize). La valeur obtenue est une chaine de caractères. | La propriété **style** d'un élément permet de modifier les propriétés css pour cet élément. Elles sont accessibles par leur nom converti en camelback (ainsi font-size devient fontSize). La valeur obtenue est une chaine de caractères. | ||
+ | ===== ===== | ||
__Attention :__ | __Attention :__ | ||
Ligne 114: | Ligne 114: | ||
Pour accéder à un style défini par une règle dans une feuille de style, il faut utiliser la fonction | Pour accéder à un style défini par une règle dans une feuille de style, il faut utiliser la fonction | ||
+ | ===== ===== | ||
__Exemple :__ | __Exemple :__ | ||
< | < | ||
- | var element = document . getElementById (" exemple "); var computed = window . getComputedStyle (element ); | + | var element = document . getElementById (" exemple " |
+ | var computed = window . getComputedStyle (element ); | ||
var margeL = computed . marginLeft ; // unité récupérée en px, pas de raccourci : computed.marge interdit | var margeL = computed . marginLeft ; // unité récupérée en px, pas de raccourci : computed.marge interdit | ||
var couleur = computed . backgroundColor ; // format rgb (... ,... ,...) | var couleur = computed . backgroundColor ; // format rgb (... ,... ,...) | ||
Ligne 126: | Ligne 127: | ||
**getComputedStyle** permet d' | **getComputedStyle** permet d' | ||
+ | ===== ===== | ||
==== Manipuler le DOM ==== | ==== Manipuler le DOM ==== | ||
Ligne 132: | Ligne 133: | ||
Les nœuds de l' | Les nœuds de l' | ||
+ | ===== ===== | ||
=== L' | === L' | ||
Ligne 141: | Ligne 142: | ||
* parentNode ; nœud parent | * parentNode ; nœud parent | ||
* childNodes : liste des nœuds enfants | * childNodes : liste des nœuds enfants | ||
- | | + | ===== ===== |
+ | | ||
* previousSibling, | * previousSibling, | ||
* … cf https:// | * … cf https:// | ||
+ | ===== ===== | ||
=== Créer un noeud === | === Créer un noeud === | ||
Ligne 150: | Ligne 152: | ||
* **document.createTextNode(text)** : création d'un nouveau nœud texte dont le contenu est text | * **document.createTextNode(text)** : création d'un nouveau nœud texte dont le contenu est text | ||
* **node.cloneNode(prof)** : crée un nouveau nœud, copie de node, avec ses descendant si prof=true, sans ses descendants si prof=false. | * **node.cloneNode(prof)** : crée un nouveau nœud, copie de node, avec ses descendant si prof=true, sans ses descendants si prof=false. | ||
- | * | + | ===== ===== |
=== Insérer un nœud dans le document === | === Insérer un nœud dans le document === | ||
Ligne 157: | Ligne 159: | ||
Un nœud récupéré et inséré ailleurs est déplacé, il n' | Un nœud récupéré et inséré ailleurs est déplacé, il n' | ||
+ | ===== ===== | ||
=== Supprimer un nœud === | === Supprimer un nœud === | ||