Javascript中的多行警报

时间:2012-02-18 09:59:43

标签: javascript alert

此代码

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

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

12 个答案:

答案 0 :(得分:41)

尚未测试,但这是否有效?

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

答案 1 :(得分:20)

这恰好发生在我身上......我需要将其更改为\\n而不是\n

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

答案 2 :(得分:4)

如果要渲染警报服务器端(即:在网站上),则将更改\n添加到\\n应该有效,但如果您正在运行客户端(即:测试等),则只需{{} 1}}无法正常工作。例如,尝试在this网站上运行以下行。

\\n

或:

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

在jsfiddle,第一个工作,因为它运行它客户端,但如果你在服务器端运行它,它需要双斜杠( alert("Hello again! This is how we" +"\\n" +"add line breaks to an alert box!"); )我不知道为什么这是,但我有经过多次测试。

希望这有帮助!

答案 3 :(得分:2)

问题已经过时但我想给出一个明确的答案,并解释为什么会有这样的人来到这里:

首先,问题中的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),因此浏览器会抱怨&#34;未终止的字符串文字&#34;在真正的休息时间。此规则有一些例外,例如水平制表符(\ t)。所以(在这种情况下)你必须使用\\ n来逃避换行符两次。因此,当PHP解析并将其从\\ n转换为\ n时,JavaScript可以将其从\ n转换为 [实际换行符]

正确的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)。

答案 4 :(得分:1)

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

答案 5 :(得分:1)

这个脚本适合我。

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

答案 6 :(得分:0)

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

答案 7 :(得分:0)

使用单引号。

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

答案 8 :(得分:0)

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

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

答案 9 :(得分:0)

alert(“再次问好!这就是我们的方式” +“ \ n” +“将换行符添加到警报框中!”);

\ n->这正在工作 working with \n

\ n->不起作用,它只是将其视为警报msges的连续字符串 does not working with \n

答案 10 :(得分:0)

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

示例-

some text here
some more text

输出:

class AddressSpecification(private val address: Address) : Specification {
    override fun isSatisfiedBy(): Boolean {
        return (address.municipality.isNotBlank()
                && if (address.neighbourhood == null) true else address.neighbourhood.isNullOrBlank()
                && address.postalCode.isNotBlank()
                && address.stateAbbreviation.isNotBlank())
                && if (address.street.apartment == null) true else address.street.apartment > 0

    }
}

答案 11 :(得分:-1)

我建议的更实用的方法是定义自己的print()函数,忘记手动为每行添加\\n

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

现在你可以用多个参数调用print(),每个参数都可以在一个单独的行中使用。