Fiche DOM HTML : Objet documentObjet de la fiche :État de la fiche
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Propriétés | Commentaires |
|---|---|
| .cookie | Cette propriété permet d'accéder aux célèbres cookies.
On utilise en général des fonctions d'écriture et de lecture des cookies existantes. Reportez vous à la fiche concernant les cookies pour plus de détail dans la fiche dédiée à leur utilisation : Accéder à la fiche cookies |
| .mimeType | Contient le type du document chargé. Le plus souvent mimeType contient document HTML.
onclick="alert(Résultat : ' + window.document.mimeType);" |
| .domain | Contient le domaine de l'url complète de la page.
onclick="alert('Résultat : ' + window.document.domain)" |
| .lastModified | Chaîne de caractères représentant la date de dernière modification de la page.
Attention aux pages qui sont régénérées à chaque appel comme par exemple les pages PHP ou ASP. La date de modification est la date de génération donc pas très intéressante à exploiter dans ce cas. onclick="alert('Résultat : ' + window.document.lastModified)" |
| .location | Contient l'url complète de la page.
onclick="alert('Résultat : ' + window.document.location)" |
| .protocol | Contient le type de protocole de chargement de la page. Peut valoir File, http, https, ...
onclick="alert('Résultat : ' + window.document.protocol)" |
| .referrer | Contient l'url de la page d'où vient le visiteur, appelée page référant. Cette propriété très utile permet de connaître les sites referant, c'est-à-dire les sites qui font un lien vers vos pages.
onclick="alert('Résultat : ' + window.document.referrer)" |
| .title | Contient le titre de la page, celui qui est défini entre les balises <title> et </title> du document. Cette propriété est modifiable sous Internet Explorer (window.document.title="toto" pour changer le titre courant de la page en toto).
onclick="alert('Résultat : ' + window.document.title)" |
| .URLUnencoded | Contient l'url complète de la page, avec les caractères spéciaux encodés. Voir location pour l'url sans encodage.
onclick="alert('Résultat : ' + window.document.URLUnencoded)" |
| .URL | Contient l'url complète de la page. Strictement équivalent à location.
onclick="alert('Résultat : ' + window.document.URL)" |
| Méthodes | Commentaires | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| .getElementById("identificateur") |
Retourne l'objet HTML à partir de son identificateur id. Pour se positionner sur un élément identifié par son attribut id et ainsi accéder aux propriétés de cet élément : title, src - width - height - alt pour une image, aux éléments d'un formulaire(action, submit ..), aux éléments de style etc. Cette méthode est extrêmement utile pour modifier le DOM et construire une site web dynamique. |
||||||||||||||||||
| .getElementsByName( "nom") | Retourne l'objet HTML à partir du nom défini dans la propriété name de la balise de l'objet. Comme précédemment permet d'accéder aux attributs de l'objet. | ||||||||||||||||||
| .getElementsByTagName( "nom de la balise") | Retourne une liste des éléments relatifs à la balise donnée à l'exception de cet élément lui-même. La liste retournée est mise à jour automatiquement à chaque changement de l'arbre DOM. | ||||||||||||||||||
| .write(' texte')1 | Écrit le paramètre texte dans le document, à la position de l'appel du script. Le paramètre texte peut être une chaîne de caractères classiques, du code HTML et même du javascript.
<script type="text/javascript">document.write("Je suis du <b>texte</b> écrit à partir d'un <span style='color:red'>script</span>");</script> donne lors de son exécution le résultat suivant : |
||||||||||||||||||
| .images[] | Renvoie un tableau contenant tous les objets image de la page. Peut s'appliquer de la même manière pour des formulaires (.forms.length) etc.. Méthodes applicables :
|
||||||||||||||||||
| .forms[nom_formulaire] ou si l'identificateur est celui d'un formulaire .getElementById("identificateur") |
|
Note1 relative à document.write() : Attention
| Exemple illégal | Même exemple légal |
|
|
|
|
Le premier exemple est illégal du fait de la présence de la séquence de caractères "</b>" dans l'élément script : Le contenu d'un élément script est le code source d'un script, et en tant que tel, ne devra pas être considéré par le navigateur comme un fragment de HTML. En effet les navigateurs doivent reconnaître le début du script immédiatement après la fermeture de la balise de début, et une fin de script juste avant un délimiteur ("</") suivi d'un caractère . Le source du script peut de ce fait ne pas être achevé par une balise </script>, mais peut s'arrêter sur toute balise commençant par "</" suivi d'un caractère alphabétique (</b>). En conséquence, toute balise HTML qui est sensée être utilisée telle quelle doit être "échappée" (à l'aide du caractère \) de façon à ne pas provoquer de confusion d'interprétation de fin de script. |
|
x=window.document.getElementById('i_Tableau_MWD')
| Propriétés | Commentaires | Test | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| .className | Classe de l'élément ou noeud sur lequel on est positionné :
onclick="alert('Classe de l'élément : ' + x.className)"; |
|||||||||||||||||||
| .id | Lit ou positionne l'Identificateur de l'élément ou noeud sur lequel on est positionné :
onclick="alert('Identificateur de l'élément : ' + x.id)"; |
|||||||||||||||||||
| .title | Donne le contenu de l'attribut title de l'élément ou noeud sur lequel on est positionné :
onclick="alert('Titre de l'élément : ' + x.title)"; |
|||||||||||||||||||
| .attributes.length | Nombre d'attributs de l'élément ou noeud sur lequel on est positionné :
onclick=" alert('Nb attributs de l'élément : ' + x.attributes.length)"; |
|||||||||||||||||||
| .attributes[i].name
.attributes[i].value |
Donne les noms et valeurs des attributs de l'élément ou noeud sur lequel on est positionné :
|
|||||||||||||||||||
| .classList |
L'API classList permet d'accéder à la liste des classes appliquées à un élément HTML, de manière simple et efficace via les méthodes suivantes :
|
|
||||||||||||||||||
| .outerHTML | Donne ou modifie le contenu de l'élément ou noeud sur lequel on est positionné, élément inclus. onclick=" alert(x.outerHTML)"; |
|||||||||||||||||||
| .innerHTML | Donne ou modifie le contenu de l'élément ou noeud sur lequel on est positionné, élément exclus.
onclick=" alert(x.innerHTML)"; |
|||||||||||||||||||
| .offsetWidth |
offsetWidth est une mesure qui donne la largeur d'un élément. Cela inclut les bordures verticales (border), les marges internes verticales (padding) ainsi que la barre de défilement verticale si elle est présente et affichée, et la largeur (width) CSS de l'élément.
|
Objet de test
|
||||||||||||||||||
| .offsetHeight | offsetHeight est une mesure qui donne la hauteur d'un élément. Cela inclut les bordures horizontales (border), les marges internes horizontales (padding) ainsi que la barre de défilement horizontale si elle est présente et affichée, et la hauteur (hight) CSS de l'élément. | Même principe que pour offsetWidth mais pour la hauteur. | ||||||||||||||||||
| .style |
La propriété style d'un élément représente sa déclaration de style en-ligne, qui se trouve dans son attribut style et qui a la priorité la plus haute dans la cascade CSS. Toutes les possibilités disponibles pour cette propriété sont disponibles dans la fiche DOM_Document_CSS. Pour obtenir les valeurs de toutes les propriétés CSS pour un élément, on peut utiliser window.getComputedStyle consultable aussi dans la fiche dans la fiche DOM_Document_CSS. |
Objet de test
|
||||||||||||||||||
| .textContent | Représente le contenu textuel d'un nœud et de ses descendants. | |||||||||||||||||||
| .setAttribute(nom,valeur) |
Permet d'éditer (ajouter, changer, modifier) un attribut. Le premier paramètre est le nom de l'attribut, et le deuxième, est la nouvelle valeur à donner à l'attribut.
Cas de boolean : Pour définir la valeur d'un attribut booléen, tel que disabled ou enabled, on peut spécifier n'importe quelle valeur. Une chaîne vide ou le nom de l'attribut sont des valeurs recommandées. Tout ce qui compte est que si l'attribut est présent, quelle que soit sa valeur réelle, sa valeur est considérée comme true (vraie). L'absence de l'attribut signifie que sa valeur est false (fausse). |
On va rajouter, supprimer, lire l'attribut title (valeur : "Je suis le titre que vous venez d'ajouter") sur la forme ci-dessous. Cet attribut sera visible, s'il existe, au survol de la forme. Objet de test
|
||||||||||||||||||
| .getAttribute(nom) | Permet de récupérer l'attribut d'un élément. Le paramètre est le nom de l'attribut. | |||||||||||||||||||
| .removeAttribute(nom) | Enlève l'attribut d'un l'élément. |
| Soit la page HTML suivante | et son rendu page web |
|---|---|
|
| ![]() |
La construction ci dessus donne la structure de noeuds suivante :

| Noeuds du schéma ci-dessus | Commentaires |
|---|---|
| Le noeud 0 | a pour enfants les noeuds 1,2,3 |
| Les noeuds 1 | est un enfant du noeud 0 |
| Le noeud 2 | est un enfant du noeud 0, mais aussi le parent des noeuds 4,5 et 6 |
| Le noeud 3 | est le dernier enfant du noeud 0 |
| Le noeud 2 | est le frère suivant du noeud 1, et le frère précédent du noeud 3 |
| Le noeud 5 | n'est pas un enfant du noeud 0, mais un enfant du noeud 2 et c'est aussi le parent du noeud 7 |
| Les noeuds 4,6,7 | sont des noeuds de type texte |
| Le noeud 1 | est un noeud texte de type commentaire HTML |
La méthode la plus simple et la mieux adaptée est d'utiliser la propriété .getElementById("identificateur") ou bien .getElementsByName( "nom").
| Code HTML | Résultat |
| <div id="id_Demo" name="n_Demo" style="border:solid thin gray;width:300px;text-align:center"> Je suis la boite <div>; de <span style="color:red;font-weight:bold">test</span></div> | Je suis la boite <div> de test |
| Positionnement | |
| var x = document.getElementById("id_Demo"); | La variable x représente la référence de l'élément div. |
| Propriétés | Commentaires | Test |
|---|---|---|
| .nodeType | Type d'élément ou noeud sur lequel on est positionné :
1 => Elément HTML 2 => Elément Attribut 3 => Texte 4 => Nœud pour passage CDTA 5 => Nœud pour référence d'entité 6 => Nœud pour entité 7 => Nœud pour instruction de traitement 8 => Commentaire HTML 9 => Noeud Document 10 => Noeud type de document 11 => Nœud de fragment de document 12 => Nœud pour notation onclick="alert('Type d'élément : ' + x.nodeType)"; |
|
| .nodeName | Nom de l'élément ou noeud sur lequel on est positionné :
onclick="alert('Nom de l'élément : ' + x.nodeName)"; |
|
| .hasChildNodes() | Renvoie un booléen true ou false suivant que le noeud sur lequel on est positionné possède ou ne possède pas des noeuds enfants.
onclick=" if (x.hasChildNodes()) alert ('Le noeud ' + x.nodeName + ' possède un ou des noeuds enfants'); else alert('Le noeud ' + x.nodeName + ' ne possède pas de noeud enfant');" |
|
| .childNodes.length .childNodes[i] |
Donne le nombre de noeuds enfants appartenant au noeud sur lequel on est positionné.
onclick="if (x.hasChildNodes()) { var _Comment = ''; _Comment+='Le noeud ' + x.nodeName + ' possède : ' + x.childNodes.length + ' noeuds enfant'; for (i=0 ; i < x.childNodes.length ; i++) { _Comment+= '\nNom ' + i + ' : ' + x.childNodes[i].tagName; } alert(_Comment); } else alert('Le noeud ' + x.nodeName + ' ne possède pas de noeud enfant'); " ; |
|
| .parentNode parentNode.tagName |
Positionnement sur le noeud parent. Une fois positionné on peut appliquer les différentes propriétés du noeud comme nodeName, className, id etc.
onclick="alert('Elément parent de l\'élément ' + x.nodeName + ' : ' + x.parentNode.tagName + '\nElément parent de l\'élément parent ' + x.parentNode.parentNode.tagName + '\nNom du Parent/Parent/Parent/Parent ' + x.parentNode.parentNode.parentNode.parentNode.nodeName); "; |
|
| .firstChild | Renvoie le premier nœud enfant du nœud courant, ou null s'il n'en a pas. | |
| .firstChild.nextSibling | Renvoie le nœud (node) suivant immédiatement le nœud spécifié dans la liste des enfants (childNodes) de son nœud parent, ou null si le nœud spécifié est le dernier dans cette liste. | |
| .lastChild.previousSibling | Renvoie le nœud (node) précédant immédiatement le nœud courant dans la liste des enfants de son parent (childNodes), ou null s'il s'agit du premier nœud de la liste. |
Cette exemple montre l'organisation des éléments HTML sous forme de noeuds, ainsi que la forme des informations disponibles au niveau de chaque noeud.
Cette exemple montre comment lire et comment modifier les informations d'un noeud.
| Propriétés | Commentaires |
|---|---|
| .createElement('nom élément') | Créer un noeud. Exemple var Element = document.createElement('div'); |
| Une fois le noeud (ou élément) créé toutes les propriétés de l'objet document en relation avec les noeuds s'appliquent. Exemple : Element.id= "id_MonDiv" etc. | |
| Parent.appendChild(l'élément) | Ajoute le noeud (ou élément) créé par createElement() comme enfant de son parent.
Exemple : document.getElementById('_MaForme').appendChild(Element ) Ajoute le noeud ou élément <div> à son noeud (ou élément) parent qui dans notre exemple pourrait être un formulaire ayant pour identificateur _MaForme. |
| Parent.removeChild(id) | Effacer un noeud
|
Note1 :
Le paramètre est une valeur booléenne obligatoire, elle indique si la copie doit se faire en profondeur ou non (voir les notes ci-dessous).
Note2 : Lors du clonage tout est copié y compris l'ancien id. Comme 2 éléments ne doivent pas posséder le même id il faut donc le modifier.
Note3 : Le nœud dupliqué renvoyé par cloneNode ne fera pas partie du document tant qu'il n'y est pas ajouté via la méthode appendChild ou une méthode similaire. De même, il n'aura pas d'élément parent tant qu'il n'a pas été ainsi ajouté à un autre nœud.
Remarque 1: Cloner un nœud copie tous ses attributs ainsi que leurs valeurs.
Remarque 2: Cloner un nœud copie tous les évènements initialisées sur ce nœud, à l'exeption des écouteurs d'évènement qui eux sont liés à l'id du nœud qui devra être nécessairement différent de celui d'origine.
Certaines propriétés ou méthodes de l'objet document vont être très souvent utilisées pour rendre votre site dynamique et interactif.
Dans une moindre mesure
Mais
Toujours prévoir un identificateur (id="xxx") et un nom (name="yyy") aux éléments que vous allez construire et que vous pourrait être amené à modifier dynamiquement.
Attention : indicateur et nom doivent être unique pour chaque objet.