2011-12-20 6 views
51

tengo una cadena decirEl uso de nueva línea ( n) en la cadena y de la representación de la misma en HTML

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

en Jquery, estoy tratando de utilizar

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

con toda claridad que estoy esperando mi msg se mostrará en 2 líneas, pero en su lugar \ n se muestra en el mensaje. ¿Alguna solución rápida para eso?

Gracias,

+5

Uso
en lugar de \ n – jantimon

+1

Muy claro, la respuesta está en su pregunta, que está tratando de hacer que el mensaje de error en div como html, por lo que puede usar '
etiqueta' – Murtaza

+0

No hay nada "bastante claro "esperando dos líneas. Por el contrario, está bastante claro que la línea nueva se representará como espacio simple, y solo se ajustará la línea si es necesario. Así es como funciona HTML, por supuesto, también funciona como '.html'. –

Respuesta

45

Use <br /> para la nueva línea en html:

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

por alguna razón, tengo que escapar de "\ n" como "\\ n" o de lo contrario no funciona. (probado en Chrome 46). ¿Alguna razón por qué? –

+2

Tenga en cuenta que esto solo reemplazará la primera aparición del carácter '\ n' dentro de la cadena. Ver el [Documentación de MDN] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace) –

+1

mejor '.replace (/ \ n/g, "
") 'es prevenir más nueva línea. – KingRider

1

Tal vez en lugar de .text.html?

+0

Para mí .html trabajado;) – Faizan

87

Indica tu css en la celda de tabla a

white-space:pre-wrap; 

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

+2

así que ¿no se supone que esta es la respuesta aceptada? LE: Veo que esto solo es compatible con IE 8+ [link] (http://www.w3schools.com/cssref/pr_text_white-space.asp) – gciochina

+1

Esta respuesta es mucho mejor que configurar el innerHTML, porque no funciona t causa una vulnerabilidad XSS. – RobinLinus

+1

Además, puede usar 'white-space: pre-line;' ya que las secuencias de espacios en blanco colapsarán en un solo espacio en blanco. El texto se ajustará cuando sea necesario y en los saltos de línea. Más información sobre: ​​[https://www.w3schools.com/cssref/pr_text_white-space.asp](https://www.w3schools.com/cssref/pr_text_white-space.asp) – JiaHao

3

Se podría utilizar una etiqueta pre vez de un div. Esto mostraría automáticamente sus \ n de la manera correcta.

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