2011-11-16 19 views
13

que insertar varios textNodes en javascript, y no puede encontrar la manera de separarlos con retornos de carro. He intentado poner "\ n" "\ r", y "
", pero ninguno de ellos funcionaCómo insertar un elemento textNode javascript en una nueva línea

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

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

quiero que esto parezca como:

nodo en la línea 1

nodo en la línea 2

NO

nodo en línea 1Node en línea 2

¿Algún consejo sobre cómo puedo lograr esto?

+0

se ignoran los saltos de línea en HTML. Debe usar una etiqueta '
' para comenzar una nueva línea de texto. – jfriend00

+0

Consulte el siguiente enlace para obtener la respuesta correcta: [introduzca la descripción del enlace aquí] (http://stackoverflow.com/questions/28490684/create-linebreak-on-webpage-within-a-textnode-javascript) –

Respuesta

24

Uso <br> separarlos como la misma familia

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

Esto funcionó como un encanto. Tenga en cuenta que también puede agregar 'element.appendChild (br);' varias veces a su elemento para agregar varias líneas sin crear la misma variable. :) – 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

Mi conjetura es que su tratando de mostrar los separan en una vista HTML y no una vista de texto en cuyo caso se tienen que insertar etiquetas <br /> entre los nodos de texto a través de document.createElement('br') para mostrarlos en líneas separadas. utilizando \r o \n sólo afectará a cómo se ve en vista de origen.

5

motores de renderizado no tienen en cuenta el avance de línea y retorno de carro que pudiera ser emitida. Mejor si se utiliza un <br /> así:

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); 

Gracias Doug Owings. También http://jsfiddle.net/Q8YuH/3/

+2

El tratamiento de los espacios en blanco se define en el [especificación HTML 4.01] (http://www.w3.org/TR/html401/struct/text.html#h-9.1). El espacio en blanco dentro del marcado está contraído en un solo espacio y los elementos que solo contienen espacios en blanco pueden ser eliminados por completo. Dado que la gran mayoría del contenido en la web es HTML, e incluso documentos con un DOCTYPE XHTML se desempeñó como HTML (y, por tanto, tratarse como documentos HTML por los navegadores) el marcado approprlate para un elemento BR es
. – RobG

+0

Esto no funcionará tampoco;) http://jsfiddle.net/Q8YuH/2 –

+0

@DougOwings gracias :) –

2

para que sea perfecto.

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/>"); 
Cuestiones relacionadas