Je HTML comme ce qui suit:Utilisation de JavaScript insertBefore() pour insérer avant un TextNode?
<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 JavaScript qui se déplacera toute la # move-moi div à l'intérieur du div # nouveau 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 JavaScript je:
function moveDiv() {
var moveable = document.getElementById('move-me');
var newParent = document.getElementById('new-parent');
newParent.parentNode.insertBefore(moveable, newParent.firstChild);
}
J'utilise Firebug pour déboguer, et je peux voir que newParent.firstChild
est un TextNode, mais je reçois toujours l'erreur suivante:
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 pas? Si oui, y a-t-il une autre bonne méthode pour le faire?
Remarque: Je ne peux pas modifier ou nettoyer le code HTML pour inclure des balises de paragraphe ou supprimer des espaces.
Merci, merci. Votre explication aide beaucoup; J'ai aussi mélangé ça avec appendChild, je pense. –
Je vois - insertBefore doit être appelé sur le conteneur/parent qui contient le noeud que je veux insérer avant. – kermit