web-dev-qa-db-de.com

Mehrzeilige Warnung in Javascript

Dieser Code

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

funktioniert nicht Die Firefox-JavaScript-Konsole nennt den Fehler "nicht abgeschlossenes Zeichenfolgenliteral" und zeigt auf das Symbol "vor\n. Ich möchte eine Warnung mit mehrzeiligem Text auslösen. Bitte keine jQuery.

18
Pave

Nicht getestet aber funktioniert das?

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

Das ist mir gerade passiert ... genau. Ich musste es in \\n anstelle von \n ändern.

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

Das Ändern von \n in \\n sollte funktionieren, wenn Sie den Alert-Server rendern (z. B. auf einer Website). Wenn Sie jedoch clientseitig arbeiten (z. B. Testing usw.), funktioniert \\n nicht. Versuchen Sie beispielsweise, die folgenden Zeilen auf this website auszuführen.

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

oder:

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

In jsfiddle funktioniert das erste, weil es auf der Clientseite ausgeführt wird. Wenn Sie es jedoch serverseitig ausführen, ist der doppelte Schrägstrich (\\n) erforderlich. 

Hoffe das hilft!

4
Travis

Die Frage ist alt, aber ich möchte eine klare Antwort geben und erklären, warum dies für andere geschieht, die hierher kommen:

Zunächst einmal stimmt die JavaScript-Codezeile in der Frage nicht. Es ist absolut gültig und erzeugt keinen Parsing-Fehler. Der Grund für das Problem in Vitalmax 'Fall lag höchstwahrscheinlich darin, dass er/sie keinen zusätzlichen Code veröffentlicht hat, der diese Zeile umgibt.

Hier ein Beispiel in PHP, das zeigt, warum sich der JS-Parser über die Syntax beschwert:

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

Die analysierte serverseitige Ausgabe ist dann (dies ist, was der Browser erhält):

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

In JavaScript dürfen Strings dürfen nicht echte Zeilenumbrüche haben. Stattdessen müssen sie immer mit Escapezeichen versehen werden (wie:\n). Der Browser beschwert sich also beim tatsächlichen Zeilenumbruch über ein "nicht abgeschlossenes Zeichenfolgenliteral". Es gibt einige Ausnahmen von dieser Regel, z. B. für horizontale Tabulatoren (\ t). Also müssen Sie (in diesem Fall) die Zeilenumbrüche zweimal mit \\ n entziehen. Wenn PHP es also analysiert und von\n in\n konvertiert, kann JavaScript es von\n nach [reeller Zeilenumbruch] konvertieren.

Ein korrektes PHP Beispiel wäre:

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

Oder: 

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

Im zweiten Fall müssen Sie es nicht doppelt maskieren, da Zeichen mit Escapezeichen in PHP - Zeichenfolgen mit einfachen Anführungszeichen nicht dekodiert werden (\ n bleibt\n).

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

Dieses Skript funktioniert für mich.

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

Verwenden Sie einfache Anführungszeichen.

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

Eine andere Möglichkeit ist String.fromCharCode():

alert("This unit has been removed from stock" + String.fromCharCode(13) + " Do you wish to RETURN this unit to stock?");
0
Kevin Looby

error "missing ; before statement" Das sagt mir, dass oberhalb dieser Codezeile das Semikolon fehlt. Übliche Syntax gotchya sind if-Anweisungen, die Klammern nicht richtig schließen. Oder geschweifte Klammern.

0
Chris K

alert ("Hallo nochmal! So fügen wir" + "\ n" + "Zeilenumbrüche in eine Alarmbox ein!");

\ n -> das funktioniert Arbeiten mit\n

\ n -> funktioniert nicht, es wird nur als fortlaufende Zeichenfolge von Alerts behandelt funktioniert nicht mit\n

0
Lalit Dubey