javascript - 为什么像 `\n` 这样的转义序列不能在 <input> 标签的 value= 属性中解释?

标签 javascript html

有人能解释一下为什么以下两部分代码有不同的结果吗?

这里的结果是:

34rtyrtyrrtyr87 \n oiupoiuapgdaiuga

var str = document.getElementById("custId").value

if (/\r|\n/.exec(str)) {
  console.log(str)
} else {
  console.log("not foundx")
}
<input type="hidden" id="custId" name="custId" value="34rtyrtyrrtyr87 \n 
oiupoiuapgdaiuga" autofocus> <br>

这里的结果是:

34rtyrtyrrtyr87
 oiupoiuapgdaiuga

var str = "34rtyrtyrrtyr87 \n oiupoiuapgdaiuga"

if (/\r|\n/.exec(str)) {
  console.log(str)
} else {
  console.log("not foundx")
}
<input type="hidden" id="custId" name="custId" value="34rtyrtyrrtyr87 \n oiupoiuapgdaiuga" autofocus><br>

尝试读取类型,但都是字符串。 需要哪种类型的转换才能使一个行为与另一个行为相似,反之亦然?

最佳答案

在 JavaScript 字符串中,\nescape sequence对于换行符。在 HTML 带引号的属性值中,\n 只是字符 \n

如果您想在 HTML 中插入换行符,您可以这样做,有时会牺牲良好的格式:

<input type="hidden" … value="34rtyrtyrrtyr87
oiupoiuapgdaiuga" …>

或者使用 character reference :

<input type="hidden" … value="34rtyrtyrrtyr87&#x0a;oiupoiuapgdaiuga" …>

for (const input of document.getElementsByTagName('input')) {
    console.log(JSON.stringify(input.value));
}
<input type="hidden" value="a\nb">
<input type="hidden" value="a
b">
<input type="hidden" value="a&#x0a;b">

关于javascript - 为什么像 `\n` 这样的转义序列不能在 &lt;input&gt; 标签的 value= 属性中解释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77231988/

相关文章:

jquery - Css "card"下面的文章到另一篇 - 找不到解决方法

html - firefox 不显示 html 文件的样式

javascript - javascript 中的线程

javascript - 将表格数据转换为数组(格式化)

javascript - 在选择列表中选择相同的选项

javascript - 你如何知道何时通过 ajax 在 firefox 插件中加载新数据?

javascript - 在方法 JQuery 之外使用我的变量

javascript - knockout 如何更改绑定(bind)到元素的模型

javascript - jquery过滤器 "a"带有条件的标签

html - 最小高度和最大高度的范围及其缩放级别