2011-11-16 4 views
13

J'insère plusieurs textNodes dans javascript, et je n'arrive pas à comprendre comment les séparer avec des retours chariot. Je l'ai essayé de mettre "\ n", "\ r" et "
", mais aucun d'entre eux travaillentComment insérer un élément javascript textNode sur une nouvelle ligne

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

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

Je veux que cela apparaisse comme:

nœud sur la ligne 1

noeud sur la ligne 2

PAS

nœud en ligne 1Node sur la ligne 2

Des conseils sur la façon dont je peux accomplir cela?

+0

Les sauts de ligne sont ignorés en HTML. Vous devez utiliser une balise '
' pour démarrer une nouvelle ligne de texte. – jfriend00

+0

Voir le lien ci-dessous pour la bonne réponse: [entrez la description du lien ici] (http://stackoverflow.com/questions/28490684/create-linebreak-on-webpage-within-a-textnode-javascript) –

Répondre

24

Utilisez <br> pour les séparer comme comme ce

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

Cela a fonctionné comme un charme. Notez que vous pouvez également ajouter 'element.appendChild (br);' plusieurs fois à votre élément pour ajouter plusieurs lignes sans créer la même 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

Je suppose que vous essayez de les afficher séparés dans une vue HTML et non une vue TEXT dans ce cas, vous devez insérer <br /> balises entre les nœuds de texte via document.createElement('br') pour les afficher sur des lignes séparées. L'utilisation de \r ou de \n affectera uniquement son aspect dans la vue source.

5

moteurs de rendu ne considèrent pas linefeed et retour chariot à rendre. Mieux, si vous utilisez un <br /> comme ceci:

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

Merci Doug Owings. Aussi http://jsfiddle.net/Q8YuH/3/

+2

Le traitement des espaces est défini dans la [spécification HTML 4.01] (http://www.w3.org/TR/html401/struct/text.html#h-9.1). Les espaces dans le balisage sont réduits à un seul espace et les éléments qui ne contiennent que des espaces peuvent être complètement supprimés. Étant donné que la grande majorité du contenu sur le Web est du HTML, et même des documents avec un DOCTYPE XHTML sont servis en HTML (et donc traités comme des documents HTML par les navigateurs), le balisage approprié pour un élément BR est
. – RobG

+0

Cela ne fonctionnera pas non plus;) http://jsfiddle.net/Q8YuH/2 –

+0

@DougOwings merci :) –

2

Pour le rendre parfait.

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/>"); 
Questions connexes