使用jQuery实时解码和编码来自php htmlentities的HTML

时间:2013-08-14 15:35:08

标签: jquery html-entities html-encode

这就是问题,我有一个带有编码html的“pre”标签,使用来自php的htmlentities()在网站上正确显示。

但后来我想重新编码将其放入“textarea”中以便实时使用。 (比如stackoverflow就是这样)。然后,使用新信息在“pre”标记中对此文本进行修改(一次又一次)。

我试过这个,但似乎它不起作用,因为textarea总是空的。这是代码:

<script>
var t0=document.getElementById("textarea0"),
x0=document.getElementById('pre0');

t0.value=x0.innerHTML().html().text(); //dec
t0.onkeyup=function(){
x0.innerHTML=t0>.value.text().html(); //enc};
</script>

我真的不明白这个代码是如何工作的,我知道这是错误的,因为jquery远离我的想法,我在编码之前使用$('<div/>')看到了与此相关的其他类似问题,但我不认为这是问题所在。 (我再说一遍,我对此视而不见)

(对不起,如果我犯了太多错误,我不是英国作家,你可以猜到,我不使用翻译)

EDITED

第一部分现在正常工作,Textarea充满了PRE的内容,并被解码(用<>和那种东西)来实现真正的工作。

但是我不能把它还给PRE,给他们带来新的变化。

这是现在的实际代码:

var t0=$("textarea#textareaName0"),
x0=$('pre#xmpName0');

t0.val(x0.text()); //dec
t0.keyup(function()
{
x0.innerHTML=t0.val(); //enc
});

任何解决方案? (非常感谢你)

最终解决方案

为了更新内容,有效的代码是:

t0.keyup(function()
{
x0.text(t0.val()); //enc
});

正如你所说,jquery可以在屏幕上打印而不需要解释,所以我不需要编码来避免它。 非常感谢你。

2 个答案:

答案 0 :(得分:1)

您无法使用.text() 编码从HTML中展平的文字。 HTML信息永远消失了。并且.text()返回一个字符串,它没有名为.html()的方法。

充其量,您可以将展平的文本放回文本区域。

x0.innerHTML=t0.value;

答案 1 :(得分:1)

我假设这类似于显示HTML源代码的HTML教程,然后您希望逐字编辑该源代码(不包含所有&gt;内容)

var src = $("pre").text()会在变量src中为您提供来源。

$("textarea").val(src);应将其放入文本区域(来自here)。

顺便说一句,$(src)为您提供了一个带有src的分离DOM,因为$('<div/>')为您提供了一个包含一个div的DOM。您似乎希望用户进行编辑,而不是jQuery,因此您已经在src中拥有了所需的一切,并且不需要创建DOM。如果你想从jQuery插入元素,你只需要DOM。