Utiliser JavaScript insertBefore () pour insérer avant un TextNode?
J'ai le code HTML comme suit:
<div id="move-me">
<a href="#">I'm a link</a>
</div>
<div id="new-parent">
Some plain text.
</div>
Je suis en train d'écrire un script JavaScript qui permettra de déplacer l'ensemble de la #move-moi div à l'intérieur de la #new-div parent, ci-dessus le texte, comme suit:
<div id="new-parent">
<div id="move-me">
<a href="#">I'm a link</a>
</div>
Some plain text.
</div>
Voici le code JavaScript que j'ai:
function moveDiv() {
var moveable = document.getElementById('move-me');
var newParent = document.getElementById('new-parent');
newParent.parentNode.insertBefore(moveable, newParent.firstChild);
}
Je suis à l'aide de Firebug pour déboguer, et je peux voir que newParent.firstChild
est un TextNode, mais je reçois toujours le message d'erreur suivant:
Node was not found" code: "8
newParent.parentNode.insertBefore(moveable, newParent.firstChild);
Il semble que insertBefore
nécessite un nœud d'élément et ne fonctionnera pas sur un nœud de texte... est-ce que le droit? Si oui, est-il une autre bonne méthode pour faire cela?
Note: je ne peux pas les modifier ou de nettoyer le code HTML à inclure les étiquettes de paragraphe ou de supprimer l'espace blanc.
source d'informationauteur Melissa Avery-Weir
Vous devez vous connecter pour publier un commentaire.
Non,
insertBefore
fonctionnera très bien avec un nœud de texte comme le nœud inséré, avant l'. Le problème est que le nœud que vous essayez d'insérer, avant n'est pas un enfant du nœud de l'insertion. Vous devez supprimer les.parentNode
bits:Vous devez supprimer le ".parentNode" à partir de votre insert. Un nœud de texte est toujours un nœud et peut être référencé comme tous les autres noeuds.