2011-11-16 39 views
13

Tôi chèn một số mã văn bản vào javascript và không thể tìm ra cách tách riêng chúng với dòng trả về vận chuyển. Tôi đã thử đặt "\ n", "\ r", và "
" nhưng không ai trong số họ làm việcCách chèn phần tử javascript textNode trên dòng mới

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

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

Tôi muốn này xuất hiện như:

Node trên dòng 1

Node trên dòng 2

KHÔNG

Node trên dòng 1Node trên dòng2

Mọi lời khuyên về cách tôi có thể thực hiện điều này?

+0

ngắt dòng được bỏ qua trong HTML. Bạn phải sử dụng thẻ '
' để bắt đầu một dòng văn bản mới. – jfriend00

+0

Xem liên kết bên dưới để có câu trả lời đúng: [nhập mô tả liên kết tại đây] (http://stackoverflow.com/questions/28490684/create-linebreak-on-webpage-within-a-textnode-javascript) –

Trả lời

24

Sử dụng <br> để tách chúng như như thế này

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

Điều này hoạt động như một sự quyến rũ. Lưu ý rằng bạn cũng có thể thêm 'element.appendChild (br);' nhiều lần để phần tử của bạn thêm nhiều dòng mà không tạo cùng một biến. :) – 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

tôi đoán là bạn đang cố gắng để hiển thị chúng tách trong một chế độ xem HTML và không phải là một cái nhìn TEXT trong trường hợp này bạn cần phải để chèn <br /> thẻ giữa các nút văn bản qua document.createElement('br') để hiển thị chúng trên dòng riêng biệt. sử dụng \r hoặc \n sẽ chỉ ảnh hưởng đến giao diện của nó trong chế độ xem nguồn.

5

cơ Rendering không xem xét linefeedvận chuyển trở lại để được trả lại. Tốt hơn nếu bạn sử dụng một <br /> như thế này:

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

Cảm ơn Doug Owings. Ngoài ra http://jsfiddle.net/Q8YuH/3/

+2

Việc xử lý khoảng trắng được xác định trong [đặc tả HTML 4.01] (http://www.w3.org/TR/html401/struct/text.html#h-9.1). Khoảng trống trong đánh dấu được thu gọn thành một không gian duy nhất và các phần tử chỉ chứa khoảng trắng có thể bị xóa hoàn toàn. Do phần lớn nội dung trên web là HTML và thậm chí cả tài liệu với DOCTYPE XHTML được phân phát dưới dạng HTML (và do đó được xử lý dưới dạng tài liệu HTML của trình duyệt), đánh dấu chuẩn cho phần tử BR là
. – RobG

+0

Điều này sẽ không hoạt động;) http://jsfiddle.net/Q8YuH/2 –

+0

@DougOwings thanks :) –

2

Để làm cho nó hoàn hảo.

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/>"); 
Các vấn đề liên quan