例如;
var text = document.getElementById("escape").innerHTML;
alert(text);
text = "hello my name is \n cool";
alert(text);

<p id="escape">hello my name is \n cool</p>
&#13;
在第一次警报期间,警报内的文字显示为
hello my name is \n cool
但是在第二次它变成
hello my name is
cool
如何将第一个警报显示为第二个?
答案 0 :(得分:2)
应该使用textarea而不要使用\ n,只需按Enter键即可创建新行。
<textarea id="escape">
hello my name is
cool
</textarea>
因为p或div标签将返回原始字符串,\将作为\\
进行转义答案 1 :(得分:1)
JavaScript中包含'is \n cool'
的字符串可以表示为字符列表:
["i", "s", " ", "↵", " ", "c", "o", "o", "l"]
^^^ newline character
请注意,即使字符串似乎包含反斜杠和n
字符,字符串的实际值也不会。这是因为\n
是一个转义序列,它被评估为一个换行符。
阅读包含文字文本is \n cool
的HTML的文本内容,最终会得到一个可以表示为字符列表的字符串:
["i", "s", " ", "\", "n", " ", "c", "o", "o", "l"]
^^^ ^^^
| +- n character
+------ backslash character
注意字符串在这里如何包含反斜杠和n
字符。 \n
不是HTML中的转义序列,因此字符保留其值。
如果您希望HTML包含与JavaScript字符串相同的值,则需要包含相同的换行符 正确编码为HTML 。
这可以通过文字换行符来完成:
<div>is
cool</div>
或者可以使用HTML编码的换行符来完成:
<div>is cool</div>
请注意即使字符串似乎包含&
,#
,1
,0
和;
字符,实际的值字符串的不。这是因为
是一个HTML实体,被评估为单个换行符。
答案 2 :(得分:0)
您要问的是如何将字符串值解释为JavaScript字符串文字。将字符串解释为JavaScript的方法是(邪恶的)eval
,如果你足够小心的话可以在这里使用:
function interpretJSString(value) {
return value
.split('"')
.map(function (v) {
return eval('"' + v + '"');
})
.join('"');
}
var text = document.getElementById("escape").innerHTML;
var interpretedText = interpretJSString(text);
alert(interpretedText);
<p id="escape">hello my "name" is \n \tcool</p>
唯一不能处理的转义序列是\"
,因为它需要额外的预防措施来防止值中的任何"
s突破字符串并造成破坏。
答案 3 :(得分:-1)
将第一个text
替换为text.replace("\\n", "\n")
。