web-dev-qa-db-ja.com

JavaScriptの複数行アラート

このコード

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

動作しません。 Firefox JavaScriptコンソールは、エラーを「未終了の文字列リテラル」と名付け、\ nの前に「」記号をポイントします。複数行のテキストでアラートを起動します。

23
Pave

テストしていませんが、これは機能しますか?

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

これはちょうど私に起こった...正確に。 \\nではなく\nに変更する必要がありました。

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

\n\\nに変更することは、アラートをサーバー側(つまり、Webサイト上)でレンダリングする場合は機能しますが、クライアント側(つまり、テストなど)を実行する場合は\\n動作しません。たとえば、 this websiteで次の行を実行してみてください。

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

または:

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

Jsfiddleでは、クライアント側で実行されるため最初の1つが機能しますが、サーバー側で実行する場合は二重スラッシュ(\\n)が必要ですこれがなぜなのかわかりませんが、複数テストしました回。

お役に立てれば!

5
Travis

質問は古いですが、私は明確な答えを与え、ここに来る他の人になぜこれが起こるのか説明したいです

まず、質問のJavaScriptコード行に問題はありません。これは完全に有効であり、解析エラーは発生しません。 Vitalmaxの場合の問題の理由は、その行を囲む追加のコードを投稿しなかったためと思われます。

以下にPHPの例を示します。これは、JSパーサーが構文について文句を言う理由を示しています。

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

解析されたサーバー側の出力は次のとおりです(これはブラウザーが取得するものです)。

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

JavaScriptでは、文字列必須ではありませんに実際の改行があります。代わりに、常にエスケープする必要があります(\ nなど)。したがって、ブラウザは実際の改行で「未終了の文字列リテラル」について不平を言います。水平タブ(\ t)など、この規則にはいくつかの例外があります。 (この場合)\\ nで改行を2回エスケープする必要があります。したがって、PHPが解析され、\\ nから\ nに変換されると、JavaScriptは\ nから[real line break]

正しいPHP例:

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

または:

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

2番目の場合、PHP単一引用符付きの文字列はエスケープされません(\ nは\ nのままです)内のエスケープ文字のため、二重エスケープする必要はありません。

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

このスクリプトは私のために機能します。

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

単一引用符を使用します。

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

別の方法は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"このコード行の上からセミコロンが欠落していることがわかります。通常の構文は、括弧を適切に閉じないif文です。または中括弧。

0
Chris K

alert( "こんにちは!これが私たちのやり方です" + "\ n" + "警告ボックスに改行を追加する!");

\ n->これは動作しています \ nで動作

\ n->は機能せず、アラートmsgesの連続文字列として処理します \ nでは機能しません

0
Lalit Dubey