我一直在尝试解码文本,因此可以采用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
我在做什么错?
行:
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>
<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>