这就是问题,我有一个带有编码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可以在屏幕上打印而不需要解释,所以我不需要编码来避免它。 非常感谢你。
答案 0 :(得分:1)
您无法使用.text()
编码从HTML中展平的文字。 HTML信息永远消失了。并且.text()
返回一个字符串,它没有名为.html()
的方法。
充其量,您可以将展平的文本放回文本区域。
x0.innerHTML=t0.value;
答案 1 :(得分:1)
我假设这类似于显示HTML源代码的HTML教程,然后您希望逐字编辑该源代码(不包含所有>
内容)
var src = $("pre").text()
会在变量src
中为您提供来源。
$("textarea").val(src);
应将其放入文本区域(来自here)。
顺便说一句,$(src)
为您提供了一个带有src的分离DOM,因为$('<div/>')
为您提供了一个包含一个div的DOM。您似乎希望用户进行编辑,而不是jQuery,因此您已经在src
中拥有了所需的一切,并且不需要创建DOM。如果你想从jQuery插入元素,你只需要DOM。