insertAfter() avec insertBefore() et node.nextSibling (DOM Core Level 1)

Publié le 23 février 2008 par Mr32

La méthode element.insertBefore() permet d'insérer un nœud (node) enfant juste avant le nœud enfant de référence parmi un nœud parent.

noeudParent.insertBefore(noeudAInserer, noeudDeReference);


Il n'existe pas de méthode element.insertAfter() pour insérer un nœud après le nœud de reference. Pour contourner cette limitation, vous pouvez utiliser element.nextSibling, qui renverra le nœud suivant au nœud spécifié.

noeudParent.insertBefore(noeudAInserer, noeudDeReference.nextSibling);


Grâce au code source ci-dessous, vous pouvez ajouter la méthode element.insertAfter() et ainsi l'utiliser aussi simplement que element.insertBefore().

Node.prototype.insertAfter = function(noeudAInserer, noeudDeReference) {
	if(noeudDeReference.nextSibling) {
		return this.insertBefore(noeudAInserer, noeudDeReference.nextSibling);
	} else {
		return this.appendChild(noeudAInserer);
	}
}

Attention: le code ci-dessus ne fonctionne pas sous Internet Explorer... pour ce faire, vous devez utiliser une simple fonction Javascript.