我有一个带有值为“\n”的选项标签的选择标签。当选择该选项并使用jQuery获取值时,JavaScript似乎将其视为字符串文字而不是解释为换行符。
我尝试了转义、取消转义、先转义再取消转义、使用jQuery htmlEncoding技术、jQuery htmlDecoding技术,甚至尝试与空字符串连接。我快要抓狂了。这应该很简单。
至少有5种解决方法立即在我的脑海中浮现,具有不同程度的优雅,但此时此刻,我更想知道为什么会出现这种行为。是否有一些简单的东西我错过了?我的真正问题是“为什么JavaScript在一个上下文中以某种方式处理字符串\n,在另一个上下文中则不同”,而不是“我该如何让它工作”。
以下是代码:
Html
<select id="delimiter">
<option value="\n">New Line</option> <!--This should produce a linefeed-->
<option value=",">, (Comma)</option>
<option value=";">; (Semicolon)</option>
<option value="\t">Tab</option>
</select>
<button onclick="doit()">
Check It
</button>
JavaScript
function doit(){
var delimiter = $("#delimiter").val();
console.debug("\n"); //produces an actual linefeed character
console.debug(delimiter); //this produces the string "\n"
}
我有一个相关的 Codepen,链接在这里:https://codepen.io/codysechelski/pen/MoJKMB?editors=1111。
\n
或\t
这样的转义序列。https://codepen.io/tarabyte/pen/RgKZwd?editors=1111,所以并不是`JavaScript`在执行此操作 :) - Yury Tarabanko\
和n
组成,翻译成字符串文字应该是'\\n'
。尝试使用console.debug(delimiter.split(''), delimiter === '\\n')
。 - Yury Tarabanko