Sử dụng dòng mới (\ n) trong chuỗi và hiển thị giống nhau trong HTML


87

Tôi có một chuỗi nói

string display_txt = "1st line text" +"\n" + "2nd line text";

trong Jquery, tôi đang cố gắng sử dụng

('#somediv').html(display_txt).css("color", "green")

khá rõ ràng, tôi đang mong tin nhắn của mình được hiển thị thành 2 dòng, nhưng thay vào đó \ n đang được hiển thị trong thông báo. Bất kỳ bản sửa lỗi nhanh chóng cho điều đó?

Cảm ơn,


1
Khá rõ ràng, câu trả lời là trong câu hỏi của bạn, bạn đang cố gắng để làm cho thông báo lỗi trong div như html, vì vậy bạn có thể sử dụng <br />thẻ
Murtaza

Không có gì "khá rõ ràng" khi mong đợi hai dòng. Ngược lại, khá rõ ràng là dòng mới sẽ được hiển thị dưới dạng không gian đơn giản, chỉ bao bọc dòng nếu cần. Đó là cách HTML hoạt động, tất nhiên nó cũng là cách .htmlhoạt động.

2
Ý tôi chỉ là với ngữ cảnh mà tôi đã lưu trữ chuỗi của mình là "văn bản dòng đầu tiên" và "văn bản dòng thứ 2", rõ ràng là tôi muốn những thứ này trong 2 dòng, không liên quan đến cách html hoạt động :) cảm ơn bạn.
KeenUser

Câu trả lời:


79

Sử dụng <br />cho dòng mới trong html:

display_txt = display_txt.replace(/\n/g, "<br />");

1
vì lý do nào đó, tôi phải thoát "\ n" là "\\ n", nếu không nó không hoạt động. (đã thử nghiệm trong Chrome 46). Bất kỳ lý do tại sao?
Sujay Phadke

2
Xin lưu ý rằng điều này sẽ chỉ thay thế lần xuất hiện đầu tiên của \nký tự bên trong chuỗi. Xem tài liệu MDN
Dominic Boulanger

3
tốt nhất .replace(/\n/g, "<br />")là ngăn chặn thêm dòng mới.
KingRider

2
Tôi nghĩ câu trả lời của @vsync nên được chấp nhận.
Ayush Kumar

Hoạt động hoàn hảo. Cảm ơn bạn.
joshlsullivan

174

Đặt css của bạn trong ô bảng thành

white-space:pre-wrap;

document.body.innerHTML = 'First line\nSecond line\nThird line';
body{ white-space:pre-wrap; }


6
vì vậy đây không phải là câu trả lời được chấp nhận? LE: Tôi thấy rằng đây chỉ được hỗ trợ trong IE 8 + link
gciochina

4
Câu trả lời này là cách tốt hơn so với việc đặt innerHTML, vì nó không gây ra lỗ hổng XSS.
LinusK

4
Bên cạnh đó, bạn có thể sử dụng white-space:pre-line;như các chuỗi khoảng trắng sẽ thu gọn thành một khoảng trắng duy nhất. Văn bản sẽ bao bọc khi cần thiết và ngắt dòng. Thông tin thêm về: https://www.w3schools.com/cssref/pr_text_white-space.asp
HakuteiJ 17/07/17

Câu trả lời này không chuyển đổi \ n trong văn bản để một dòng mới
irl_irl

2
@ste_irl - ý bạn là gì? các \nphương tiện một dòng mới sẽ được in và nó in nó
vsync

6

Bạn có thể sử dụng thẻ trước thay vì div. Điều này sẽ tự động hiển thị \ n của bạn theo cách chính xác.

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script>
$(document).ready(function(){
         var display_txt = "1st line text" +"\n" + "2nd line text";
         $('#somediv').html(display_txt).css("color", "green");
});
</script>
</head>
<body>

<pre>
<p id="somediv"></p>
</pre>

</body>
</html>

1

Có thể .textthay vì .html?


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.