JavaScript警报框中的新行


389

您如何在JavaScript警报框中添加新行?


1
PHP_EOL工作对我来说,虽然许多其他的答案在这里没有....
海登思林

Answers:


593

\n将放入新行- \n作为新行的控制代码。

alert("Line 1\nLine 2");


7
完全跨浏览器
贾斯汀·约翰逊

4
如果我在警报消息中使用\ n,则该对话框甚至不会显示在ASP.NET应用程序中。微软对此有问题吗:)
Hammad Khan

20
对于鳄鱼猎人,在ASP.NET中的代码警报后,您需要使用转义字符,这意味着Registerblabla(bla,bla,“ alert('hi \\ nhi second line')”)
NicolasT 2011年

5
在ASP.NET MVC4中,我使用</br>来代替\n新行。
凯文·梅雷迪斯

2
我正在MVC 4中工作,并且confirm()onsubmit发生时创建一个Html.BeginForm()\n对我不起作用。Illegal token代码被击中时出现错误。显然,您需要同时避免换行符和产生换行符的反斜杠,例如:\\n
Kehlan Krumme 2013年


40

您必须使用双引号将特殊字符如\ n \ t等显示在php脚本的js警报框中:

$string = 'Hello everybody \n this is an alert box';
echo "<script>alert(\"$string\")</script>";

但是,当您想显示双引号中指定的字符串时,可能会出现第二个问题。

查看链接文字

如果字符串用双引号(“)引起来,PHP将为特殊字符解释更多的转义序列

转义序列\ n转换为0x0A ASCII转义字符,并且该字符不显示在警报框中。解决方案包括逃避此特殊序列:

$s = "Hello everybody \\n this is an alert box";
echo "<script>alert(\"$string\")</script>";

如果您不知道字符串的括起来,则必须将特殊字符转换为其转义序列

$patterns = array("/\\\\/", '/\n/', '/\r/', '/\t/', '/\v/', '/\f/');
$replacements = array('\\\\\\', '\n', '\r', '\t', '\v', '\f');
$string = preg_replace($patterns, $replacements, $string);
echo "<script>alert(\"$string\")</script>";

29

在C#中,我做到了:

alert('Text\\n\\nSome more text');

显示为:

文本

一些文字




8

当您想通过php变量编写JavaScript警报时,必须在“ \ n”之前添加另一个“ \”。相反,警报弹出窗口不起作用。

例如:

PHP :
$text = "Example Text : \n"
$text2 = "Example Text : \\n"

JS:
window.alert('<?php echo $text; ?>');  // not working
window.alert('<?php echo $text2; ?>');  // is working

为什么这个答案被低估了?如果您在编程网页方面更动态地思考,这将是很大的帮助。
Jimwel Anobong

在PHP中使用双引号设置var时,PHP将检查双引号内的变量。从理论上讲,这会浪费资源。在PHP中创建js Alerttext的简单明了的方法是使用单引号并在单qoutes之外添加变量,例如$ jsAlert ='bla bla'。$ var。'。\ nmore bla bla';
Terradon

我同意,但您永远做不到您所说的。用例示例,当所有字符串变量都来自PHP时,您无法为每个需要换行的字符串编写特定的处理方法。
Julha '17

3

以防万一这对任何人都有用,当从后面的C#代码执行此操作时,我必须使用双转义符,否则会收到“未终止的字符串常量” JavaScript错误:

ScriptManager.RegisterStartupScript(this, this.GetType(), "scriptName", "alert(\"Line 1.\\n\\nLine 2.\");", true);

3

可以使用,\n但是如果脚本位于java标记中,则必须编写\\\n

<script type="text/javascript">alert('text\ntext');</script>

要么

<h:commandButton action="#{XXXXXXX.xxxxxxxxxx}" value="XXXXXXXX" 
    onclick="alert('text\\\ntext');" />

在Java标记内,您只需要对其进行两次转义即可。就像<%out.print("alert('First line\\nSecond line.')");%>
third_eye 2014年

3

alert('The transaction has been approved.\nThank you');

只需添加一个换行符\ n即可。

alert('The transaction has been approved.\nThank you');
//                                       ^^

这就是六年半前迈克尔·加图索所说的。他的回答被接受了。这似乎没有说什么新东西,基本上是它的一个副本。
昆汀

@Quentin:区别在于单引号与双引号...双向均可,而Michael Gattuso并未提及。
Ole Sauffaus

@OleSauffaus —没关系。
昆汀


1

感谢您的提示。使用“ +”号是使它起作用的唯一方法。这是添加一些数字的函数的最后一行。我只是在自己学习JavaScript:

alert("Line1: The sum is  " + sum + "\n" + "Line 2");

1

\n 但是,如果您在Java代码中,将无法正常工作:

<% System.out.print("<script>alert('Some \n text')</script>"); %>

我知道这不是一个答案,只是认为这很重要。


我的意思是Java。就像在JSP页面中一样。
third_eye 2014年

2
然后,您应该逃脱转义字符<% System.out.print("<script>alert('Some \\n text')</script>"); %>
2014年

1

使用javascript的换行符代替“ \ n”。例如:“ Hello \ nWorld”使用“ Hello \ x0AWorld”效果很好!


\xA一样\n吗?
Cristik '16


0

在JAVA应用中,如果从“属性”文件中读取了消息。

由于java-html的双重编译,

您将需要两次转义。

jsp.msg.1=First Line \\nSecond Line

将导致

First Line
Second Line

-1

我看到有些人在MVC中遇到了麻烦,所以...使用模型传递'\ n'的一种简单方法,在我的情况下甚至使用翻译后的文本,都是使用HTML.Raw插入文本。这为我解决了。在下面的代码中,Model.Alert可以包含换行符,例如“ Hello \ nWorld”。

alert("@Html.Raw(Model.Alert)");



-2

我用过:“ \ n \ r”-尽管它只能用双引号引起来。

var fvalue = "foo";
var svalue = "bar";
alert("My first value is: " + fvalue + "\n\rMy second value is: " + svalue);

will alert as:

My first value is: foo
My second value is: bar

1
如果您坚持使用CRLF终止,则正确的顺序是\r\n,而不是\n\r
Cristik '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.