Professional Documents
Culture Documents
Cours - Technologies WEB2.0 - Ch3 - DOM
Cours - Technologies WEB2.0 - Ch3 - DOM
CSS3
Chapitre 2: JavaScript
Chapitre 3: Le DOM
Chapitre 3: XML
Chapitre 4: AJAX
Chapitre 5: JQuery
DOM
Un DOM (Document Object Model) est une description
structurée d’un document HTML ou XML
En termes techniques:
Un DOM est un arbre avec des nœuds
Chaque nœud est un objet pour lequel il existe
des méthodes et des propriétés (qu’on peut
"lire" ou modifier).
Ces interfaces (classes, méthodes et
propriétés) sont implémentées pour plusieurs
langages comme JavaScript, PhP 5, Java,
Python, Perl, ActiveX, ...
Leurs noms sont les mêmes dans toutes ces
implémentations
Structure du DOM
Dans le DOM, tout est « Node »
Le document lui même est un “document node”
Tous les éléments HTML sont des “element
nodes”
Tous les attributs HTML sont des “attribute
nodes”
Les textes à l’intérieur des éléments HTML sont
des “text nodes”
Les commentaires sont des “comment nodes”
Exemple
<html>
<head>
<title>Sample DOM Document</title>
</head>
<body>
<h1>An HTML Document</h1>
<p>This is a <i>simple</i> document.
</body>
</html>
Modèle avec lequel le
Document navigateur fonctionne
<html>
<head> <body>
<title>
"simple"
Exercice
Etablir l’arbre DOM correspondant
au code suivant:
<div id="maZone">
<span><b>Un texte</b></span>
<div id="monAutreZone">
Un autre texte
</div>
</div>
Une 1ére Solution
<div id="maZone">
<span>
<b>
Un texte
</b>
</span>
<div id="monAutreZone">
Un autre texte
</div>
</div>
La classe Node
La classe centrale représentant un nœud DOM est
Node. Elle définit différentes propriétés afin de
donner accès aux informations relatives au nœud,
telles que son type et son nom.
Propriétés de la classe Node :
Propriété Description
attributes Attributs du nœud
nodeName Nom de la balise du nœud
nodeType Type du nœud
nodeValue Valeur de la balise. Cette valeur peut être nulle lorsque
aucune valeur n’est associée à la balise.
<ul>
<li>Coffee</li>
<li>Tea</li>
</ul>
<p>Click the button to change the text of the first list item (index 0).</p>
<script>
function myFunction() {
var list = document.getElementsByTagName("UL")[0];
list.getElementsByTagName("LI")[0].innerHTML = "Milk";
}
</script>
<p>Click the button to get the tag name of the first element in the document that has a
name attribute with the value "fname".</p>
<p id="demo"></p>
<script>
function myFunction() {
var x = document.getElementsByName("fname")[0].tagName;
document.getElementById("demo").innerHTML = x;
}
</script>
</body>
Résultat: INPUT
</html>
Accès aux éléments à partir d’un nœud
La classe Node permet de parcourir un arbre DOM relativement à
un nœud précis.
Elle possède des propriétés qui permettent de référencer les nœuds
autour du nœud courant.
Propriété Description
childNodes Représente la liste des nœuds enfants sous forme d’objet NodeList.
<ul id="myList"><li>Coffee</li><li>Tea</li><li>Milk</li></ul>
<p>Click the button to remove the first item from the list.</p>
<script>
function myFunction() {
var list = document.getElementById("myList");
list.removeChild(list.childNodes[0]);
}
Résultat:
</script> Tea
Milk
</body>
</html>
Manipulation des
attributs
Tout élément du type ELEMENT_NODE peut
contenir des attributs permettant de lui ajouter
des informations.
zone.setAttribute("type", "UnType");
var valeur=zone.getAttribute("type");
alert(valeur);
zone.removeAttribute("type");
var valeur=zone.getAttribute("type");
alert(valeur); // valeur null !
L’attribut innerHTML
L’attribut innerHTML permet de remplacer complètement le
contenu d’un élément par celui spécifié dans une chaîne de
caractères
Résultat :
<div id="maZone">
<span> <p><b>mon texte</b></p> </span>
<div id="monAutreZone">
Un autre texte
</div>
</div>
Inconvénient:
Ces chaînes nuisent à la maintenabilité
(modification) du code JavaScript et peuvent
conduire à des syntaxes HTML invalides.
Modification de l’arbre
DOM au chargement
Il faut garder à l’esprit que le DOM n’est accessible
que lorsque la page est chargée dans sa globalité.