DOM:element.insertBefore
Un article de MDC.
Sommaire |
[modifier] Résumé
Insère le nœud spécifié juste avant un élément de référence parmi les enfants du nœud courant.
[modifier] Syntaxe
var elementIns = elementParent.insertBefore(nouvelElement, elementRef)
Si elementRef vaut null, nouvelElement est inséré à la fin de la liste des nœuds enfants.
-
elementIns: le nœud inséré, c'est-à-direnouvelElement -
elementParent: le parent du nœud nouvellement inséré. -
nouvelElement: le nœud à insérer. -
elementRef: le nœud avant lequelnouvel_elementest inséré.
[modifier] Exemple
<html>
<head>
<title>Test d'insertBefore</title>
</head>
<body>
<div>
<span id="childSpan">foo bar</span>
</div>
<script type="text/javascript">
// crée un nouveau nœud d'élément vide
// sans aucun ID, attribut ou contenu
var sp1 = document.createElement("span");
// lui donne un attribut id appelé 'newSpan'
sp1.setAttribute("id", "newSpan");
// crée un peu de contenu pour cet élément.
var sp1_content = document.createTextNode("Ceci est un nouvel élément span. ");
// ajoute ce contenu au nouvel élément
sp1.appendChild(sp1_content);
var sp2 = document.getElementById("childSpan");
var parentDiv = sp2.parentNode;
// insère le nouvel élément dans le DOM avant sp2
parentDiv.insertBefore(sp1, sp2);
</script>
</body>
</html>
Il n'existe pas de méthode insertAfter pour insérer un nœud après un autre, cependant on peut l'émuler avec une combinaison de insertBefore et nextSibling.
Dans l'exemple ci-dessus, sp1 pourrait être inséré après sp2 en utilisant :
parentDiv.insertBefore(sp1, sp2.nextSibling);
Si sp2 n'a pas d'enfant suivant, c'est qu'il est le dernier enfant. Dans ce cas, sp2.nextSibling renverra null et sp1 sera donc inséré à la fin de la liste des nœuds enfants (c'est-à-dire immédiatement après sp2).
[modifier] Spécification
- DOM Level 2 Core : insertBefore — Traduction en français (non normative)