Javascript 为什么<;变成&;书信电报;?

Javascript 为什么<;变成&;书信电报;?,javascript,jquery,replace,Javascript,Jquery,Replace,我正在尝试将表情符号(图像)的html替换为纯文本。但我需要正常的HTML来显示 在这里: 即时通讯使用: $("code").each(function() { var a = ['<img class="smile" src="http://static.yamma.org/images/icons/smile.png">', '&lt;img class="laugh" src="http://static.yamma.org/images/icons/laug

我正在尝试将表情符号(图像)的html替换为纯文本。但我需要正常的HTML来显示

在这里:

即时通讯使用:

$("code").each(function() {
    var a = ['<img class="smile" src="http://static.yamma.org/images/icons/smile.png">', '&lt;img class="laugh" src="http://static.yamma.org/images/icons/laugh.png"&gt;'],
        b = [":)", ":D"];

    for (var d = 0; d < a.length; d++) {
        var e = $(this).html(),
            f = e,
            g = f.indexOf(a[d]);
        while (g != -1) {
            f = f.replace(a[d], b[d]);
            g = f.indexOf(a[d]);
        }
        $(this).text(f);
    }
});​
$(“code”)。每个(函数(){
变量a=['',img class=“laugh”src=”http://static.yamma.org/images/icons/laugh.png"'],
b=[“:)”,“:D”];
对于(var d=0;d
它返回:
divHi/div:):D::D
; 但是它应该返回:
Hi:):D::D

我不明白为什么
会被
取代


有解决办法吗?提前感谢。

我注意到您在for循环的末尾调用了
.text()
,而此时您应该调用
.html()
,即使您在开始时正确调用了
.html()

    for (var d = 0; d < a.length; d++) {
        var e = $(this).html(),
            f = e,
            g = f.indexOf(a[d]);
        while (g != -1) {
            f = f.replace(a[d], b[d]);
            g = f.indexOf(a[d]);
        }
        $(this).text(f);
    }
for(var d=0;d

.text()
总是将HTML特殊字符转换为实体,这样它们就不会被视为标记,因为它需要文本,而不是HTML。

我注意到您在for循环结束时调用了
.text()
,而您应该调用
.HTML()
,即使您正确地调用了
.HTML()
开头:

    for (var d = 0; d < a.length; d++) {
        var e = $(this).html(),
            f = e,
            g = f.indexOf(a[d]);
        while (g != -1) {
            f = f.replace(a[d], b[d]);
            g = f.indexOf(a[d]);
        }
        $(this).text(f);
    }
for(var d=0;d

.text()
始终将HTML特殊字符转换为实体,这样它们就不会被视为标记,因为它需要文本,而不是HTML。

有时阅读API会有所帮助:-在调用
.text()

用其HTML实体等价物替换特殊字符


因此,就像@BoltClock所说的,您在尝试执行的操作中使用了错误的方法。

有时阅读API确实有帮助:-在调用
.text()时

用其HTML实体等价物替换特殊字符


因此,就像@BoltClock所说的,您在尝试执行的操作中使用了错误的方法。

.html()会呈现代码。所以Hi变成了Hi。我需要它显示为:他的浏览器不应该用
.text()
那样显示吗?或者,您的
标记可能存在双重编码……这就是问题所在。这就是为什么我发布了这篇文章,以寻求帮助..html()呈现代码。所以Hi变成了Hi。我需要它显示为:他的浏览器不应该用
.text()
那样显示吗?或者,您的
标记可能存在双重编码……这就是问题所在。这就是为什么我发布了这篇文章,以寻求帮助..html()呈现代码。所以Hi变成了Hi。我需要它显示为:Hithat不修复任何东西(我尝试过)。html()会呈现代码。所以Hi变成了Hi。我需要它显示为:Hithat不能修复任何东西(我尝试过)