2012-02-18 14 views
15

Questo codiceavviso multilinea in Javascript

alert("Hello again! This is how we"+"\n"+"add line breaks to an alert box!"); 

non funziona. Firefox JavaScript errore nomi console come "stringa non terminato letterale" e punti "simbolo prima di \ n. voglio sparare un avviso con il testo su più righe. No jQuery per favore.

+0

Il codice incriminato non è quel pezzo di codice. Si noti che i messaggi syntaxerror sono quasi sempre fuorvianti – Esailija

+0

quando aggiungo // prima di questa linea tutto funziona correttamente – Pave

+6

Tuttavia, se si esegue quel codice in isolamento, funzionerà normalmente, l'ho appena testato. Si prega di fornire più codice. – Esailija

risposta

31

non ho ancora testato, ma fa questo lavoro ?

alert("Hello again! This is how we \n add line breaks to an alert box!"); 
+2

errore "missing; before statement" – Pave

0

error "missing ; before statement" che mi dice il punto e virgola non è presente sopra di questa riga di codice. sintassi abituale Gotchya sono se le dichiarazioni che non si chiude correttamente parentesi. o graffe.

17

questo è capitato di io ... esattamente. Avevo bisogno di cambiare a \\n anziché a \n.

alert("Hello again! This is how we"+"\\n"+"add line breaks to an alert box!"); 
+0

Grazie, questo è corretto quando tutto il codice javascript proviene dal lato server come una stringa, esempio: "alert ('Ciao ancora! Ecco come' + '\\ n' + 'aggiungi interruzioni di riga in una casella di avviso! '); "; -> con \\ n line break funziona, altrimenti fallisce. – FabianSilva

+0

No, solo \ n è corretto. Se lo metti in un'altra stringa (come quando fai un eco "alert ('x \ ny');";), il risultato sarebbe un avviso ('x [linebreak] y') ;, che non è corretto. Devi fare doppio escape con \\ n, sì, ma questo non ha nulla a che fare con JavaScript. – StanE

0

Utilizzare le virgolette singole.

alert("Hello again! This is how we"+'\n'+"add line breaks to an alert box!"); 
4

Aggiunta di cambiare \n-\\n dovrebbe funzionare se si sta rendendo il serverside avviso (vale a dire: In un sito), ma se si esegue lato client (es: test, ecc) solo \\n non funzionerà lavoro. Ad esempio, provare a eseguire le seguenti righe sul sito Web this.

alert("Hello again! This is how we"+"\n"+"add line breaks to an alert box!"); 

o:

alert("Hello again! This is how we" +"\\n" +"add line breaks to an alert box!"); 

Nel jsfiddle, il primo funziona, perché gestisce lato client, ma se si esegue lo serverside, richiede la doppia barra (\\n) Sono non sono sicuro del motivo, ma l'ho provato più volte.

Spero che questo aiuti!

+0

doppia barra funzionante !!! – xke

1

domanda è vecchio ma voglio dare una risposta chiara e spiegare il motivo per cui questo accade per gli altri che viene qui:

Prima di tutto, non c'è niente di sbagliato con la linea di codice JavaScript nella questione. È assolutamente valido e non produce errori di analisi. La ragione del problema nel caso di Vitalmax era probabilmente dovuta al fatto che lui/lei non ha pubblicato codice aggiuntivo, che circondava quella linea.

Ecco un esempio in PHP, che mostra il motivo per cui il parser JS lamenta la sintassi:

<?php 
    echo "alert('Hello again! This is how we\nadd line breaks to an alert box!');"; 
?> 

L'uscita lato server analizzati allora è (questo è ciò che il browser ottiene):

alert("Hello again! This is how we 
add line breaks to an alert box!"); 

In JavaScript, le stringhe non devono presentare interruzioni di riga reali. Invece, devono sempre essere sfuggiti (come: \ n), quindi il browser si lamenta di un "letterale stringa non terminato" durante la vera interruzione di riga. Ci sono alcune eccezioni a questa regola, come per i tabulatori orizzontali (\ t). Quindi (in questo caso) devi sfuggire alle interruzioni di riga due volte con \\ n. Quindi, quando PHP lo analizza e lo converte da \\ n a \ n, JavaScript può convertirlo da \ n a [interruzione di linea reale].

esempio PHP corretta sarebbe:

<?php 
    echo "alert('Hello again! This is how we\\nadd line breaks to an alert box!');"; 
?> 

Oppure:

<?php 
    echo 'alert("Hello again! This is how we\nadd line breaks to an alert box!");'; 
?> 

Nel secondo caso non c'è bisogno di raddoppiare scappare perché caratteri di escape all'interno di stringhe PHP con virgolette singole non sono decodificato (\ n rimane \ n).

1
<script> 
alert("Hello. \n How are you?") 
</script> 
+1

Benvenuti in Stack Overflow! Anche se questo snippet di codice può risolvere la domanda, [inclusa una spiegazione] (// meta.stackexchange.com/questions/114762/explaining-entely-code-based-answers) aiuta davvero a migliorare la qualità del tuo post. Ricorda che stai rispondendo alla domanda per i lettori in futuro, e queste persone potrebbero non conoscere le ragioni del tuo suggerimento sul codice. Cerca anche di non affollare il tuo codice con commenti esplicativi, in quanto ciò riduce la leggibilità sia del codice che delle spiegazioni! – FrankerZ

1

Questo script funziona per me.

<script> 
    alert("Hello. \r\n How are you?"); 
</script> 
0

Un modo più funzionale vorrei suggerire è quello di definire una propria funzione print() e dimenticare di mettere \\n per ogni linea manualmente

//define 
 
var print = new Function("var lines=arguments[0]+'\\n';; for(var i=1;i<arguments.length;i++){lines+=arguments[i]+'\\n';} alert(lines);"); 
 
    
 
//call 
 
print("say","hello","to","javascript","this","is ","awesome");

Ora è possibile chiamare il print() con più argomenti e ogni argomento sarà disponibile in una riga separata.