2011-12-20 8 views
51

ho una stringa di direUsando nuova linea ( n) nella stringa e rendere lo stesso in HTML

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

in jQuery, sto cercando di utilizzare

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

chiaramente mi aspetto il mio messaggio deve essere visualizzato in 2 righe, ma \ n viene visualizzato nel messaggio. Qualche soluzione rapida per questo?

Grazie,

+5

Uso
invece di \ n – jantimon

+1

Abbastanza chiaro, risposta è nella tua domanda, si sta cercando di rendere il messaggio di errore nel div come html, in modo da poter usare '
' tag – Murtaza

+0

Non c'è niente di "abbastanza chiaro "aspettandomi due righe. Al contrario, è abbastanza chiaro che il ritorno a capo sarà reso come spazio normale, avvolgendo solo la linea se necessario. È così che funziona l'HTML, naturalmente è anche il modo in cui '.html' funziona. –

risposta

45

Utilizzare <br /> per la nuova linea in html:

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

per qualche motivo, devo sfuggire "\ n" come "\\ n" altrimenti non funziona. (testato in Chrome 46). Qualche ragione per cui? –

+2

Si prega di notare che questo sostituirà solo la prima occorrenza del carattere '\ n' all'interno della stringa. Vedere la [documentazione MDN] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace) –

+1

migliore '.replace (/ \ n/g,"
") 'è prevenire più newline. – KingRider

1

Forse .text invece di .html?

+0

Per me .html ha funzionato;) – Faizan

87

impostare il proprio CSS nella cella di tabella per

white-space:pre-wrap; 

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

+2

quindi questa non dovrebbe essere la risposta accettata? LE: Vedo che questo è supportato solo in IE 8+ [link] (http://www.w3schools.com/cssref/pr_text_white-space.asp) – gciochina

+1

Questa risposta è decisamente migliore dell'impostazione di innerHTML, perché non lo fa t causare una vulnerabilità XSS. – RobinLinus

+1

Inoltre, è possibile usare 'white-space: pre-line;' le sequenze di spazi bianchi verranno compresse in un singolo spazio bianco. Il testo si avvolgerà quando necessario e le interruzioni in linea. Maggiori informazioni su: [https://www.w3schools.com/cssref/pr_text_white-space.asp](https://www.w3schools.com/cssref/pr_text_white-space.asp) – JiaHao

3

È possibile utilizzare un tag pre invece di un div. Questo mostrerebbe automaticamente i tuoi \ n nel modo corretto.

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