2009-02-03 11 views

Respuesta

219

En su ejemplo, se puede romper la cadena en dos piezas:

alert ("Please Select file" 
+ " to delete"); 

O bien, cuando se trata de una cadena, como en su caso, se puede utilizar un backslash como se sugiere @Gumbo:

alert ("Please Select file\ 
to delete"); 

Tenga en cuenta que este enfoque barra invertida es not necessarily preferred, y posiblemente no sea universalmente compatible (tuve problemas para encontrar datos concretos sobre esto). Es no en el ECMA 5.1 spec.

Al trabajar con otro código (sin comillas), los saltos de línea se ignoran y son perfectamente aceptables. Por ejemplo:

if(SuperLongConditionWhyIsThisSoLong 
    && SuperLongConditionOnAnotherLine 
    && SuperLongConditionOnThirdLineSheesh) 
{ 
    // launch_missiles(); 
} 
+0

Se puede romper una sentencia if? –

+1

Sí: actualicé la respuesta con un ejemplo. –

+15

Pero tenga cuidado con el mecanismo automático de inserción de punto y coma: intente tener retorno en una fila y una "cadena" en la siguiente al final de la función y como resultado no obtendrá la definición. – some

37

Ponga la barra invertida al final de la línea:

alert("Please Select file\ 
to delete"); 

Editar tengo que señalar que este no es parte de ECMAScript strings como line terminating characters no son permitido en absoluto:

Un carácter 'LineTerminator' no puede aparecer en un literal de cadena, incluso si está precedido por una barra invertida \. La forma correcta de hacer que un carácter terminador de línea sea parte del valor de cadena de un literal de cadena es usar una secuencia de escape como \n o \u000A.

Por lo tanto, el uso de la concatenación de cadenas es la mejor opción.


actualización 05/01/2015String literals in ECMAScript5 permitiría que la sintaxis se ha mencionado:

Un carácter terminador de línea no puede aparecer en una cadena literal, excepto como parte de un LineContinuationpara producir el vacío secuencia de caracteres. La forma correcta de hacer que un carácter terminador de línea forme parte del valor String de un literal de cadena es usar una secuencia de escape como \n o \u000A.

+1

Gumbo rocks .. !! –

+1

[ECMAScript5] (http://www.ecma-international.org/ecma-262/5.1/#sec-7.8.4) lo permite: "* Un carácter terminador de línea no puede aparecer en un literal de cadena, excepto como parte de a * LineContinuation * para producir la secuencia de caracteres vacía. La forma correcta de hacer que un carácter de terminador de línea sea parte del valor String de un literal de cadena es usar una secuencia de escape como '\ n' o' \ u000A'. * " – Oriol

+1

@Oriol ¡Gracias por la nota, actualizó la respuesta en consecuencia! – Gumbo

1

sólo puede utilizar

1: alert("Please select file" + 
2:  " to delete"); 

que debería funcionar

5

romper la cadena en dos piezas  

alert ("Please select file " + 
     "to delete"); 
+9

Pero no se olvide de tener un espacio al final de la primera o al comienzo de la segunda parte;) –

-4

hay necesidad de ningún salto manual de código. Solo agrega \ n donde quieras romper.

alert ("Please Select file \n to delete"); 

Esto mostrará la alerta como

Please select file 
to delete. 
+0

votante de bajada, ¿puede indicar el motivo de la votación negativa? Esta solución funciona para mí siempre. – Narendra

+24

No sé quién votó o por qué; pero solo una suposición: el operador quería saber cómo extender un texto literal a través de varias líneas de código, en lugar de cómo insertar un salto de línea en la salida. – Zarepheth

3

interesante tener en cuenta. Intentó:

alert("Some \ 
    string \ 
    wrapped \ 
    across \ 
    mutliples lines.") 

Y esto funcionó. Sin embargo, en el accidente !, había un personaje de espacio después de la última barra invertida (todas las demás barras invertidas estaban al final de la línea). ¡Y esto causó un error en el javascript! La eliminación de este espacio solucionó el error, sin embargo.

Esto está en ADT para Android usando Cordova.

+0

Pasé la mayor parte de mi día luchando contra este problema y también descubrí, gracias a ti, que un personaje espacial después de cualquiera de las barras ha causado que mi aplicación iónica no se haya compilado. ¡Gracias! – rekordboy

-2

Probé varias de las sugerencias anteriores pero recibí una advertencia de carácter ILEGAL en el inspector de códigos de Chrome. Los siguientes trabajó para mí (sólo probado en Chrome sin embargo!)

alert('stuff on line 1\\nstuff on line 2); 

sale como ...

stuff on line 1 
stuff on line 2 

NOTA de la doble barra invertida !! ... esto parece ser importante!

21

ECMAScript 6 introduce template strings:

cadenas de la plantilla son literales de cadena que permite expresiones incrustadas. Puede usar cadenas de varias líneas y funciones de interpolación de cadenas con .

Por ejemplo,

alert(`Please Select file 
to delete`); 

le alertará

Please Select file 
to delete 
+0

Guau increíble. Para obtener estos '' en el teclado, presione MAYÚS + 'dos ​​veces. En un teclado alemán, esa tecla está cerca de la tecla de retroceso. – Nadu

+0

@Nadu Eso depende de un teclado. El mío tiene una tecla '\' '. Como es un modificador, no está escrito directamente. Esa es probablemente la razón por la que pensaste que deberías presionarlo dos veces, pero eso escribirá dos de ellas. Presione la barra espaciadora para escribir solo uno. – Oriol

+0

Increíble que haya tardado tanto en permitir cadenas multilínea sin hacks sofisticados ... La pregunta es: ¿Qué se usará como separadores de línea, un carácter codificado o el carácter de corte de línea del documento? – StanE

Cuestiones relacionadas