繁体   English   中英

Javascript 中的多行警报

[英]Multi-line alert in Javascript

这段代码

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

不起作用。 Firefox JavaScript 控制台将错误命名为“未终止的字符串文字”并在 \\n 之前指向“符号。我想用多行文本触发警报。请不要使用 jQuery。

还没有测试,但这行得通吗?

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应该可以工作,但如果您正在运行客户端(即:测试等),则\\\\n将不起作用。 例如,尝试在网站上运行以下几行。

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 中,第一个有效,因为它在客户端运行,但是如果您在服务器端运行它,则需要双斜杠( \\\\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 两次对换行符进行转义。 因此,当 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!");';
?>

在第二种情况下,您不必双重转义它,因为带有单引号的 PHP 字符串中的转义字符不会被解码(\\n 保持为 \\n)。

*注意:可以使用特殊引号`,它允许在 JS 中真正换行。 例子:

alert(`Hello again! This is how we
add line breaks to an alert box!`);
<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!");

我建议的一种更实用的方法是定义您自己的print()函数并忘记手动为每一行放置\\\\n

 //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");

现在您可以使用多个参数调用print()并且每个参数将在单独的行中可用。

另一种方法是使用String.fromCharCode()

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

alert("你好!这就是我们的方式" + "\\n" + "向警告框添加换行符!");

\\n --> 这正在与 \\n一起工作

\\n --> 不起作用,它只是将其视为连续的警报消息字符串不适用于 \\n

我遇到了 \\n 和 \\n 不起作用的问题,然后我尝试使用 html break 标签,即
因为该面板是用 html 编写的并且可以正常工作。

例子 -

some text here <br> some more text

输出:

some text here
some more text

error "missing ; before statement"这告诉我这行代码上面缺少分号。 通常的语法陷阱是 if 没有正确关闭括号的语句。 或者花括号。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM