Tutoriel JavaScript

JS ACCUEIL Présentation de JS JS Où aller Sortie JS Déclarations JS Syntaxe JS Commentaires JS Variables JS JS Let Const JS Opérateurs JS Arithmétique JS Affectation JS Types de données JS Fonctions JavaScript Objets JS Événements JS Chaînes JS Méthodes de chaîne JS Recherche de chaîne JS Modèles de chaîne JS Numéros JS Méthodes de nombre JS Tableaux JS Méthodes de tableau JS Tri de tableau JS Itération de tableau JS Const tableau JS Dates JS Formats de date JS Méthodes d'obtention de date JS Méthodes de définition de date JS JS Mathématiques JS Aléatoire Booléens JS Comparaisons JS Conditions JS Commutateur JS Boucle JS pour Boucle JS pour dans Boucle JS pour de Boucle JS pendant Pause JS Itérables JS Ensembles JS Cartes JS Type de JS Conversion de type JS JS au niveau du bit JS RegExp Erreurs JS Portée JS JS Levage Mode JS strict JS ce mot clé Fonction flèche JS Cours JS JSJSON Débogage JS Guide de style JS Meilleures pratiques JS Erreurs JS Performances JS Mots réservés JS

Versions JavaScript

Versions JavaScript JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge Historique JS

Objets JS

Définitions d'objet Propriétés de l'objet Méthodes d'objet Affichage d'objet Accesseurs d'objet Constructeurs d'objets Prototypes d'objets Itérables d'objet Ensembles d'objets Cartes d'objets Référence d'objet

Fonctions JavaScript

Définitions des fonctions Paramètres de fonction Appel de fonction Appel de fonction Fonction Appliquer Fermetures de fonction

Cours JS

Introduction de classe Héritage de classe Classe Statique

JS asynchrone

Rappels JS JS asynchrone JS promet JS asynchrone/en attente

JS HTML DOM

Introduction DOM Méthodes DOM Documents DOM Éléments DOM HTML DOM Formulaires DOM DOM CSS Animations DOM Événements DOM Écouteur d'événements DOM Navigation DOM Nœuds DOM Collections DOM Listes de nœuds DOM

Nomenclature du navigateur JS

Fenêtre JS Écran JavaScript Emplacement JS Historique JS Navigateur JS Alerte contextuelle JS Calendrier JS Cookies JavaScript

API Web JS

Présentation de l'API Web API des formulaires Web API d'historique Web API de stockage Web API de travail Web API de récupération Web API de géolocalisation Web

JS AJAX

Introduction à AJAX AJAX XMLHttp Requête AJAX Réponse AJAX Fichier XML AJAX PHP AJAX ASP AJAX Base de données AJAX Applications AJAX Exemples AJAX

JSJSON

Présentation JSON Syntaxe JSON JSON contre XML Types de données JSON Analyse JSON Chaîne JSON Objets JSON Tableaux JSON Serveur JSON JSON PHP HTML JSON JSON JSONP

JS contre jQuery

Sélecteurs jQuery jQuery HTML jQuery CSS jQuery DOM

Graphiques JS

Graphiques JS Canevas JS JS Complot JS Chart.js Graphique Google JS JS D3.js

Exemples JS

Exemples JS JS HTML DOM Entrée HTML JS Objets HTML JS Événements HTML JS Navigateur JS Éditeur JavaScript Exercices JS Questionnaire JS Certificat JS

Références JavaScript

Objets JavaScript Objets DOM HTML


Navigation JavaScript HTML DOM


Avec le DOM HTML, vous pouvez naviguer dans l'arborescence des nœuds à l'aide des relations entre les nœuds.


Nœuds DOM

Selon la norme W3C HTML DOM, tout dans un document HTML est un nœud :

  • Le document entier est un nœud de document
  • Chaque élément HTML est un nœud d'élément
  • Le texte à l'intérieur des éléments HTML sont des nœuds de texte
  • Chaque attribut HTML est un nœud d'attribut (obsolète)
  • Tous les commentaires sont des nœuds de commentaires
DOM HTML tree

Avec le DOM HTML, tous les nœuds de l'arborescence des nœuds sont accessibles par JavaScript.

De nouveaux nœuds peuvent être créés et tous les nœuds peuvent être modifiés ou supprimés.


Relations de nœud

Les nœuds de l'arborescence des nœuds ont une relation hiérarchique les uns avec les autres.

Les termes parent, enfant et frère sont utilisés pour décrire les relations.

  • Dans une arborescence de nœuds, le nœud supérieur est appelé la racine (ou nœud racine)
  • Chaque nœud a exactement un parent, sauf la racine (qui n'a pas de parent)
  • Un nœud peut avoir plusieurs fils
  • Les frères et sœurs (frères ou sœurs) sont des nœuds avec le même parent
<html>

  <head>
    <title>DOM Tutorial</title>
  </head>

  <body>
    <h1>DOM Lesson one</h1>
    <p>Hello world!</p>
  </body>

</html>
Arbre de nœuds

À partir du HTML ci-dessus, vous pouvez lire :

  • <html> est le nœud racine
  • <html> n'a pas de parents
  • <html>est le parent de <head>et<body>
  • <head> est le premier enfant de <html>
  • <body> est le dernier enfant de <html>

et:

  • <head> a un enfant : <title>
  • <title> a un enfant (un nœud de texte) : "Tutoriel DOM"
  • <body>a deux enfants : <h1>et<p>
  • <h1> a un enfant : "DOM Lesson one"
  • <p> a un enfant: "Hello world!"
  • <h1>et <p>sont frères et sœurs


Naviguer entre les nœuds

Vous pouvez utiliser les propriétés de nœud suivantes pour naviguer entre les nœuds avec JavaScript :

  • parentNode
  • childNodes[nodenumber]
  • firstChild
  • lastChild
  • nextSibling
  • previousSibling

Nœuds enfants et valeurs de nœud

Une erreur courante dans le traitement DOM est de s'attendre à ce qu'un nœud d'élément contienne du texte.

Exemple:

<title id="demo">DOM Tutorial</title>

Le nœud d'élément <title>(dans l'exemple ci-dessus) ne contient pas de texte.

Il contient un nœud de texte avec la valeur "Tutoriel DOM".

La valeur du nœud de texte est accessible par la innerHTMLpropriété du nœud :

myTitle = document.getElementById("demo").innerHTML;

L'accès à la propriété innerHTML est identique à l'accès au nodeValue du premier enfant :

myTitle = document.getElementById("demo").firstChild.nodeValue;

L'accès au premier enfant peut aussi se faire comme ceci :

myTitle = document.getElementById("demo").childNodes[0].nodeValue;

Tous les (3) exemples suivants récupèrent le texte d'un <h1>élément et le copient dans un <p>élément :

Exemple

<html>
<body>

<h1 id="id01">My First Page</h1>
<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").innerHTML;
</script>

</body>
</html>

Exemple

<html>
<body>

<h1 id="id01">My First Page</h1>
<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").firstChild.nodeValue;
</script>

</body>
</html>

Exemple

<html>
<body>

<h1 id="id01">My First Page</h1>
<p id="id02">Hello!</p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").childNodes[0].nodeValue;
</script>

</body>
</html>

InnerHTML

Dans ce tutoriel, nous utilisons la propriété innerHTML pour récupérer le contenu d'un élément HTML.

Cependant, apprendre les autres méthodes ci-dessus est utile pour comprendre l'arborescence et la navigation du DOM.


Nœuds racine DOM

Deux propriétés spéciales permettent d'accéder au document complet :

  • document.body - Le corps du document
  • document.documentElement - Le dossier complet

Exemple

<html>
<body>

<h2>JavaScript HTMLDOM</h2>
<p>Displaying document.body</p>

<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML = document.body.innerHTML;
</script>

</body>
</html>

Exemple

<html>
<body>

<h2>JavaScript HTMLDOM</h2>
<p>Displaying document.documentElement</p>

<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML = document.documentElement.innerHTML;
</script>

</body>
</html>

La propriété nodeName

La nodeNamepropriété spécifie le nom d'un nœud.

  • nodeName est en lecture seule
  • nodeName d'un nœud d'élément est le même que le nom de la balise
  • nodeName d'un nœud d'attribut est le nom de l'attribut
  • nodeName d'un nœud de texte est toujours #text
  • nodeName du nœud de document est toujours #document

Exemple

<h1 id="id01">My First Page</h1>
<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").nodeName;
</script>

Remarque : nodeName contient toujours le nom de balise en majuscule d'un élément HTML.


La propriété nodeValue

La nodeValuepropriété spécifie la valeur d'un nœud.

  • nodeValue pour les nœuds d'élément est null
  • nodeValue pour les nœuds de texte est le texte lui-même
  • nodeValue pour les nœuds d'attribut est la valeur de l'attribut

La propriété nodeType

La nodeTypepropriété est en lecture seule. Il renvoie le type d'un nœud.

Exemple

<h1 id="id01">My First Page</h1>
<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").nodeType;
</script>

Les propriétés nodeType les plus importantes sont :

Node Type Example
ELEMENT_NODE 1 <h1 class="heading">W3Schools</h1>
ATTRIBUTE_NODE 2  class = "heading" (deprecated)
TEXT_NODE 3 W3Schools
COMMENT_NODE 8 <!-- This is a comment -->
DOCUMENT_NODE 9 The HTML document itself (the parent of <html>)
DOCUMENT_TYPE_NODE 10 <!Doctype html>

Le type 2 est obsolète dans le DOM HTML (mais fonctionne). Il n'est pas obsolète dans le DOM XML.