2011-09-11 15 views
28

Se ho un elemento HTML come <div> con del testo all'interno o altri elementi posso aggiungere prima o dopo questo div alcuni dati di testo senza un elemento html, solo testo semplice?Aggiungere testo prima o dopo un elemento HTML

Mi piacerebbe utilizzare solo Javascript puro.

Qualcosa di simile:

<div id="parentDiv"> 
    my text must be added here 
    <div id="childDiv"></div> 
</div> 

risposta

43

Sì, è possibile creare un nodo di testo con document.createTextNode('the text')

Quindi è possibile inserirla come un elemento con appendChild o insertBefore.

Esempio che inserire un testo prima #childDiv:

var text = document.createTextNode('the text'); 
var child = document.getElementById('childDiv'); 
child.parentNode.insertBefore(text, child); 
+8

Puoi anche provare i metodi "insertAdjacentText" o "insertAdjacentHTML": https://developer.mozilla.org/en-US/docs/Web/API/Element.insertAdjacentHTML –

1

È possibile aggiungere nodo di testo. Crea nodo - document.createTextNode('text') e quindi inserisci/aggiungi/sostituisci - fai quello che vuoi.

1

Qualcosa del genere dovrebbe farlo:

<script type="text/javascript"> 
    var parent = document.getElementById('parentDiv'); 
    var sibling = document.getElementById('childDiv'); 
    var text = document.createTextNode('new text'); 
    parent.insertBefore(text, sibling); 
</script> 
26

Solo per la cronaca:

div.insertAdjacentHTML('beforeBegin', yourText); 

dove div è la vostra bambino-DIV.

Demo online:http://jsfiddle.net/ZkzDk/

+0

Puoi anche aggiungerlo dopo ... div.insertAdjacentHTML ('afterEnd', 'il mio testo aggiunto dopo'); Qualcuno sa se è possibile rimuoverlo? (senza usare una classe o un identificativo) – tkerwood

+0

@tkerwood Sure. Devi recuperare un riferimento a quel nodo * Testo * e quindi usare il metodo '.removeChild()' (sul suo genitore). –

1

Per quanto riguarda l'argomento e gli utenti in dubbio per l'inserimento prima o dopo, ecco un esempio per il dopo:

var text = document.createTextNode("my text must be added here."); 
    var childTag = document.getElementById("childDiv"); 

    childTag.parentNode.insertBefore(text, childTag.nextSibling); 

Se il childTag non lo fa avere fratelli, va bene perché il metodo insertBefore gestisce questo caso e lo aggiunge semplicemente come ultimo figlio.

Inoltre, è possibile utilizzare il metodo appendChild() dopo aver creato il nodo di testo, quindi aggiungere il childTag tramite il parentNode.

Problemi correlati