Verwenden einer neuen Zeile (\ n) in einer Zeichenfolge und Rendern derselben in HTML


86

Ich habe eine Zeichenfolge zu sagen

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

in Jquery versuche ich zu verwenden

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

Ganz klar erwarte ich, dass meine Nachricht in 2 Zeilen angezeigt wird, aber stattdessen wird \ n in der Nachricht angezeigt. Irgendwelche schnellen Lösungen dafür?

Vielen Dank,


1
Ganz klar, die Antwort ist in Ihrer Frage, Sie versuchen, die Fehlermeldung in div als HTML zu rendern, so dass Sie <br />Tag
Murtaza

Es ist nichts "ganz klares", zwei Zeilen zu erwarten. Im Gegenteil, es ist ziemlich klar, dass die neue Zeile als einfacher Bereich gerendert wird und die Zeile nur bei Bedarf umbrochen wird. So funktioniert HTML, natürlich auch so .html.

2
Ich meinte nur mit dem Kontext, in dem ich meine Zeichenfolge als "Text in der 1. Zeile" und "Text in der 2. Zeile" gespeichert habe, es war klar, dass ich diese in 2 Zeilen haben möchte, nicht in Bezug auf die Funktionsweise von HTML :) Danke.
KeenUser

Antworten:


77

Verwenden Sie <br />für neue Zeile in HTML:

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

1
Aus irgendeinem Grund muss ich dem "\ n" als "\\ n" entkommen, sonst funktioniert es nicht. (getestet in Chrome 46). Irgendein Grund warum?
Sujay Phadke

2
Bitte beachten Sie, dass dies nur das erste Vorkommen des \nZeichens in der Zeichenfolge ersetzt. Siehe die MDN-Dokumentation
Dominic Boulanger

3
Am besten .replace(/\n/g, "<br />")verhindern Sie mehr Newline.
KingRider

2
Ich denke, die Antwort von @vsync sollte die akzeptierte sein.
Ayush Kumar

Hat perfekt funktioniert. Danke dir.
Joshlsullivan

165

Stellen Sie Ihr CSS in der Tabellenzelle auf ein

white-space:pre-wrap;

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


6
Soll das nicht die akzeptierte Antwort sein? LE: Ich sehe, dass dies nur in IE 8+ Link unterstützt wird
gciochina

4
Diese Antwort ist viel besser als das Festlegen von innerHTML, da es keine XSS-Sicherheitsanfälligkeit verursacht.
LinusK

4
Außerdem können Sie verwenden, white-space:pre-line;wie Sequenzen von Leerzeichen in ein einzelnes Leerzeichen zusammenfallen. Der Text wird bei Bedarf umbrochen und in Zeilenumbrüchen angezeigt. Weitere Informationen unter: https://www.w3schools.com/cssref/pr_text_white-space.asp
HakuteiJ

Diese Antwort konvertiert \ n innerhalb des Textes nicht in eine neue Zeile
irl_irl

2
@ste_irl - was meinst du? Das \nbedeutet, dass eine neue Zeile gedruckt werden sollte und sie auch druckt
vsync

6

Sie können ein Pre-Tag anstelle eines div verwenden. Dies würde Ihre \ n automatisch auf die richtige Weise anzeigen.

<!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

Vielleicht .textstatt .html?


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.