Ajouter
Pour ajouter un élément au DOM, il faut d'abord créer l'élément et ensuite l'ajouter à l'arborescence.
Définition : createElement
const element = document.createElement(tagName);
Permet de créer un élément.
const element = document.createElement("div");
Crée une variable element contenant un noeud div
Définition : createTextNode
const contenu = document.createTextNode(value);
Permet de créer un nœud texte qui contient le texte value.
const contenu = document.createTextNode("bonjour");
Crée une variable contenu contenant un nœud texte avec le mot bonjour.
Définition : appendChild
Pour le moment, les éléments créés ne sont pas dans le DOM.
Il faut les ajouter à l'arborescence en partant de leur parent.
parent.appendChild(child);
Permet d'insérer l'élément child comme dernier enfant de l'élément parent.
<body>
</body>
const parent = document.createElement("div");
const contenu = document.createTextNode("bonjour");
parent.appendChild(contenu);
document.body.appendChild(parent);
Ajoute un div qui contient le texte bonjour à la fin du body.
<body>
<div>
Bonjour
</div>
</body>
Définition : insertBefore
parent.insertBefore(newElement, referenceElement);
Permet d'insérer newElement avant referenceElement dans parent.
<body>
<ul>
<li>Un</li>
<li>Deux</li>
<li>Trois</li>
</ul>
</body>
const ul = document.querySelector("ul");
const li2 = ul.querySelector("li:nth-of-type(2)");
const newLi = document.createElement("li");
ul.insertBefore(newLi, li2);
<body>
<ul>
<li>Un</li>
<li></li>
<li>Deux</li>
<li>Trois</li>
</ul>
</body>
Définition : nodeValue
nodeValue permet de récupérer ou modifier la valeur d'un nœud texte.
<div>bonjour</div>
le nœud texte est le premier enfant du nœud div.
const noeudTexte = document.querySelector('div').firstChild;
noeudTexte.nodeValue = 'salut';
Ajoute au premier div le texte salut.
<div>bonjoursalut</div>
Définition : append
append permet d'ajouter plusieurs éléments en même temps.
parent.append(child1, child2, 'du texte', child3);
<body>
</body>
const element = document.createElement("p");
document.body.append(element, 'Bonjour');
Ajoute un p et le texte bonjour à la fin du body.
<body>
<p></p>
Bonjour
</body>
Attention : Déplacer
Si l'élément que vous ajouter au DOM avec appendChild ou append est un élément qui était déjà dans le DOM. Celui-ci est déplacé.
<ul>
<li>Un</li>
<li>Deux</li>
</ul>
ul = document.querySelector('ul');
li = ul.firstElementChild;
ul.appendChild(li);
Ce qui donne :
<ul>
<li>Deux</li>
<li>Un</li>
</ul>
Complément : InnerHTML, textContent
Pour récupérer le contenu d'un élément, on peut utiliser innerHTML et textContent.
<p>Je suis en <b>gras</b>, pas moi.</p>
const p = document.querySelector('p');
const texte1 = p.textContent; // "Je suis en gras, pas moi."
const texte2 = p.innerHTML; // "Je suis en <b>gras</b>, pas moi."
const texte3 = p.firstChild.nodeValue; // "Je suis en "