2011-11-16 21 views
13

Inserisco diversi textNode in javascript e non riesco a capire come separarli con i ritorni a capo. Ho provato a mettere "\ n", "\ r", e "
", ma nessuno di loro lavoroCome inserire un elemento textNode javascript su una nuova riga

var textNode = document.createTextNode("Node on line 1"); 
element.appendChild(textNode); 

textNode = document.createTextNode("Node on line 2"); 
element.appendChild(textNode); 

voglio che questo appaia come:

nodo sulla linea 1

nodo sulla linea 2

NON

nodo on line 1Node su line2

Qualche consiglio su come posso realizzare questo?

+0

interruzioni di riga vengono ignorate in HTML. È necessario utilizzare un tag '
' per iniziare una nuova riga di testo. – jfriend00

+0

Vedere il link sottostante per la risposta corretta: [inserire la descrizione del collegamento qui] (http://stackoverflow.com/questions/28490684/create-linebreak-on-webpage-within-a-textnode-javascript) –

risposta

24

Usa <br> a separarli come come questo

var br = document.createElement("br"); 
element.appendChild(br); 
+0

Questo ha funzionato come un fascino. Nota che puoi anche aggiungere 'element.appendChild (br);' più volte al tuo elemento per aggiungere più linee senza creare la stessa variabile. :) – MadsterMaddness

1
var textNode = document.createTextNode("Node on line 1"); 
element.appendChild(textNode); 

var linebreak = document.createElement('<br >'); 
element.appendChild(lineBreak); 

textNode = document.createTextNode("Node on line 2"); 
element.appendChild(textNode); 
1

La mia ipotesi è il vostro cercando di visualizzare le separano in una visualizzazione HTML e non una vista TESTO, nel qual caso è necessario inserire i tag <br /> tra i nodi di testo tramite document.createElement('br') per visualizzarli su righe separate. l'utilizzo di \r o \n avrà effetto solo su come appare nella vista sorgente.

5

motori di rendering non considerano avanzamento riga e ritorno a capo essere resi. Meglio se si utilizza un <br /> come questo:

var textNode = document.createTextNode("Node on line 1"); 
element.appendChild(textNode); 

var linebreak = document.createElement('br'); 
element.appendChild(linebreak); 

var linebreak = document.createElement('br'); 
element.appendChild(linebreak); 

textNode = document.createTextNode("Node on line 2"); 
element.appendChild(textNode); 

Grazie Doug Owings. Anche http://jsfiddle.net/Q8YuH/3/

+2

Il trattamento degli spazi bianchi è definito nella [specifica HTML 4.01] (http://www.w3.org/TR/html401/struct/text.html#h-9.1). Gli spazi bianchi all'interno del markup sono compressi in un singolo spazio e gli elementi che contengono solo spazi bianchi potrebbero averli rimossi completamente. Dato che la maggior parte del contenuto del web è HTML, e anche i documenti con un DOCTYPE XHTML sono forniti come HTML (e quindi trattati come documenti HTML dai browser), il markup appropriativo per un elemento BR è
. – RobG

+0

Questo non funzionerà neanche;) http://jsfiddle.net/Q8YuH/2 –

+0

@DougOwings grazie :) –

2

Per renderlo perfetto.

function addText(node,text){  
     var t=text.split(/\s*<br ?\/?>\s*/i), 
      i; 
     if(t[0].length>0){   
      node.appendChild(document.createTextNode(t[0])); 
     } 
     for(i=1;i<t.length;i++){ 
      node.appendChild(document.createElement('BR')); 
      if(t[i].length>0){ 
       node.appendChild(document.createTextNode(t[i])); 
      } 
     } 
}    
addText(document,"Line 1 <br> Line 2<br/>line 3<BR/>"); 
Problemi correlati