2011-11-16 160 views
13

我在javascript中插入了幾個textNode,但無法弄清楚如何用回車將它們分開。我試圖把 「\ n」, 「\ r」 和 「
」 但他們沒有工作如何在換行插入javascript textNode元素

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

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

我想這表現爲:上線

節點1

上線節點2

在2號線的線路1Node節點

關於如何完成此任務的任何提示?

+0

換行符在HTML中被忽略。您必須使用'
'標籤開始新的一行文字。 – jfriend00

+0

請參閱下面的鏈接以獲取正確的答案: [請輸入鏈接描述](http://stackoverflow.com/questions/28490684/create-linebreak-on-webpage-within-a-textnode-javascript) –

回答

24

使用<br>將它們分開爲這樣

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

這工作就像魅力。請注意,您也可以添加'element.appendChild(br);'多次添加多行而不創建相同的變量。 :) – 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

我的猜測是你想顯示他們分開在HTML視圖,而不是文本視圖在這種情況下,你需要通過document.createElement('br')插入文本節點之間<br />代碼,以便在單獨的行顯示。使用\r\n只會影響它在源視圖中的外觀。

5

渲染引擎不考慮換行回車被渲染。更好,如果你使用一個<br />這樣的:

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

感謝Doug Owings。也http://jsfiddle.net/Q8YuH/3/

+2

在[HTML 4.01規範](http://www.w3.org/TR/html401/struct/text.html#h-9.1)中定義了對空格的處理。標記中的空格被摺疊爲一個空格,只包含空格的元素可能會將其完全刪除。考慮到網絡上的絕大多數內容是HTML,並且甚至具有XHTML DOCTYPE的文檔都作爲HTML(並且因此被瀏覽器視爲HTML文檔),BR元素的適當標記是
。 – RobG

+0

這也不行;)http://jsfiddle.net/Q8YuH/2 –

+0

@DougOwings謝謝:) –

2

爲了使它完美。

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