簡體   English   中英

用JavaScript輸出轉義字符

[英]Outputting Escape Characters in JavaScript

我認為這是一個簡單的問題,但我在Stackoverflow和Google上都找不到我的答案。 這是我的問題。 我想輸出帶有轉義字符的字符串。 我已經使用了方法document.getElementIdBy()。

這是我的例子

<!DOCTYPE html>
<html>
<head>
<title>JavaScript</title>
</head>
<body>
    <p id="example1"></p><br>
    <p id="example2"></p><br>
    <p id="example3"></p><br>
    <p id="example4"></p><br>
    <script>
        var x = "\"ABC\""
        var y = "\'ABC\'"
        var z = "ABC\nDEF"
        var t = "ABC\bDEF"
        document.getElementById("example1").innerHTML=x;
        document.getElementById("example2").innerHTML=y;
        document.getElementById("example3").innerHTML=z;
        document.getElementById("example4").innerHTML=t;
    </script>
</body>
</html>

前兩個工作正常。 第三個不創建新行,第四個不創建退格鍵。 我假設變量z像這樣

ABC
DEF

如果我將此內容寫入ap元素,則它必須顯示為:ABC DEF。 因此,我可以理解為什么它沒有按預期出現(如果我將p元素設置為white-space:pre則可以按預期工作)

但是我想知道為什么\\ b轉義符不能按預期工作。 實際上,我期望輸出為:ABDEF(不帶C)。 可能有些邏輯與上層邏輯相似,但我找不到。 有人可以解釋為什么它不起作用嗎?

我認為這些字符只是從HTML剝離的,您可以通過用<br/>替換\\ n來實現所需的功能

例如

document.getElementById("example3").innerHTML=z.replace("\n","<br/>");

第三個不創建新行

HTML標記中將忽略文本中的新行。 它們被渲染為space 使用<pre>標記保持格式:

<pre id="example3"></pre>

或添加<p>標記而不是換行:

var z = "<p>ABC</p><p>DEF</p>"

<br>

var z = "ABC<br>DEF"

第四個不創建退格鍵

不太確定HTML / JS是否支持\\b

新行( \\n )不會在html中生成新行。

所以如果你寫:

<p>first line
second line</p>

您將獲得:第一行第二行。

因此要將\\n寫入html,必須將其轉換為<br>

document.getElementById("example3").innerHTML=z.replace(/\n/g,'<br>');

此正則表達式將所有\\n替換為<br>

\\b只是帶有代碼8字符。 僅當您將其發送到輸入框或文本框時,才會發生其特殊行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM