gpt4 book ai didi

javascript - 从 DOM 中提取字符串时,字符串的处理方式有所不同

转载 作者:行者123 更新时间:2023-11-28 00:57:44 25 4
gpt4 key购买 nike

我在 Javascript 方面遇到了一个非常奇怪的问题。当我从 DOM 中提取文本并尝试解码 HTML 实体时,它不起作用。但是,当我直接在代码中分配值时,它工作得很好。

我只是不明白为什么在这两种情况下对字符串的处理方式不同。我已经在 FireFox 和 Chrome 中进行了测试,并且都产生了相同的结果。

更新:正确的输出应该是 %7B (解码字符串后)。这意味着当我将值直接分配给变量时,它可以正常工作,但是当从 DOM 中提取时,它就不能正常工作。如何从 DOM 中提取文本并对其进行解码,以便生成“%7B”?

演示:jsFiddle

HTML:

<div class="myclass">\u00257B</div>

Javascript代码:

    $(document).ready(function(){

//Extracting the text from DOM
var myText = $(".myclass").html();
//decoding HTML entities
var decodedText = $("<div />").html(myText).text();
//alerting the decoded text
alert(decodedText); // output: \u00257B

//assigning the value directly to the variable
var myText2 = "\u00257B";
//decoding HTML entities
var decodedText2 = $("<div />").html(myText2).text();
//alerting decoded text
alert(decodedText2); // output: %7B

});

最佳答案

myText2 产生不同结果的原因是字符串文字中的反斜杠是转义字符。

要转义反斜杠,只需使用它两次:

myText2 = "\\u00257b";

Here is a some further information about escape characters in JavaScript

<小时/>

编辑

可能有更好的方法,但这会起作用:(如果文本中的值是不受控制的输入,则 eval 通常会受到反对,并且会产生安全隐患)

myText = eval("\"" + decodedText + "\"")

关于javascript - 从 DOM 中提取字符串时,字符串的处理方式有所不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26050082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com