このコード
alert("Hello again! This is how we" + "\n" + "add line breaks to an alert box!");
動作しません。 Firefox JavaScriptコンソールは、エラーを「未終了の文字列リテラル」と名付け、\ nの前に「」記号をポイントします。複数行のテキストでアラートを起動します。
テストしていませんが、これは機能しますか?
alert("Hello again! This is how we \n add line breaks to an alert box!");
これはちょうど私に起こった...正確に。 \\n
ではなく\n
に変更する必要がありました。
alert("Hello again! This is how we"+"\\n"+"add line breaks to an alert box!");
\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
)が必要ですこれがなぜなのかわかりませんが、複数テストしました回。
お役に立てれば!
質問は古いですが、私は明確な答えを与え、ここに来る他の人になぜこれが起こるのか説明したいです
まず、質問の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のままです)内のエスケープ文字のため、二重エスケープする必要はありません。
<script>
alert("Hello. \n How are you?")
</script>
このスクリプトは私のために機能します。
<script>
alert("Hello. \r\n How are you?");
</script>
単一引用符を使用します。
alert("Hello again! This is how we"+'\n'+"add line breaks to an alert box!");
別の方法はString.fromCharCode()
を使用することです:
alert("This unit has been removed from stock" + String.fromCharCode(13) + " Do you wish to RETURN this unit to stock?");
error "missing ; before statement"
このコード行の上からセミコロンが欠落していることがわかります。通常の構文は、括弧を適切に閉じないif文です。または中括弧。
alert( "こんにちは!これが私たちのやり方です" + "\ n" + "警告ボックスに改行を追加する!");
\ n->これは動作しています \ nで動作
\ n->は機能せず、アラートmsgesの連続文字列として処理します \ nでは機能しません