decodeURI无法使用innerHTML文本

问题描述 投票:0回答:1

我一直在尝试解码文本,因此可以采用unescape JSON编码。但是当变量值为innerHTML时我无法工作,但是当我将相同的字符串值硬编码到变量时它却可以工作。

innerHTML示例(我需要帮助)

<html>
<body>

<p id="uri">C:\\Users\\User\\Documents\\Fax</p>

<button onclick="myFunction()">Try it</button>

<p id="demo"></p>

<script>
function myFunction() {
  var uri = document.getElementById("uri").innerText;
  var dec = decodeURI(uri.toString());
  var res = "Decoded URI: " + dec;
  document.getElementById("demo").innerHTML = res;
}
</script>

</body>
</html>

预期结果:解码后的URI:C:\ Users \ User \ Documents \ Fax

具有硬编码值的工作示例

    <html>
    <body>

    <p id="uri">Decode</p>

    <button onclick="myFunction()">Try it</button>

    <p id="demo"></p>

    <script>
    function myFunction() {
      var uri = "C:\\Users\\User\\Documents\\Fax";
      var dec = decodeURI(uri.toString());
      var res = "Decoded URI: " + dec;
      document.getElementById("demo").innerHTML = res;
    }
    </script>

    </body>
    </html>

实际结果:解码后的URI:C:\ Users \ User \ Documents \ Fax

我在做什么错?

javascript html json decode decodeuricomponent
1个回答
0
投票

行:

var uri = "C:\\Users\\User\\Documents\\Fax";

实际上将uri设置为"C:\Users\User\Documents\Fax"。因为您只是在创建一个转义了反斜线的字符串。

行:

var uri = document.getElementById("uri").innerText;

uri设置为"C:\\Users\\User\\Documents\\Fax",每个位置带有两个反斜线。

如果希望它们的行为相同,则在创建字符串时需要再次转义反斜杠。

    <html>
    <body>

    <p id="uri">Decode</p>

    <button onclick="myFunction()">Try it</button>

    <p id="demo"></p>

    <script>
    function myFunction() {
      var uri = "C:\\\\Users\\\\User\\\\Documents\\\\Fax";
      console.log("uri = " + uri);
      var dec = decodeURI(uri.toString());
      var res = "Decoded URI: " + dec;
      document.getElementById("demo").innerHTML = res;
    }
    </script>

    </body>
    </html>

0
投票

<p id="uri">my%20test.asp?name=st%C3%A5le&car=saab</p>

<button onclick="myFunction()">Try it</button>

<p id="demo"></p>

<script>
    function myFunction() {
        var uri = document.getElementById("uri").innerText;
        var dec = decodeURI(uri.toString());
        var res = "Decoded URI: " + dec;
        document.getElementById("demo").innerHTML = res;
    }
</script>
© www.soinside.com 2019 - 2024. All rights reserved.