Javascript 将JS中的HTML实体解码为文本框值

Javascript 将JS中的HTML实体解码为文本框值,javascript,jquery,Javascript,Jquery,我想从一个字符串(名为descr,来自MySQL数据库)解码所有HTML实体 我使用此功能执行以下操作: function htmlDecode(input) { var doc = new DOMParser().parseFromString(input, "text/html"); return doc.documentElement.textContent; } 如果我把这个值打印到一个div中,这就行了 document.getElementById('A

我想从一个字符串(名为descr,来自MySQL数据库)解码所有HTML实体

我使用此功能执行以下操作:

function htmlDecode(input) {
  var doc = new DOMParser().parseFromString(input, "text/html");
  return doc.documentElement.textContent;
}
如果我把这个值打印到一个div中,这就行了

document.getElementById('ABC').innerHTML = htmlDecode(descr); -> Descr = "&" -> Output in Div "&"
但是,如果我将值打印到文本区域,它将不会被解码:

document.getElementById('ABCD').value = htmlDecode(descr); -> Descr = "&" -> Output in Textarea "&"

我花了很多钱,但没有找到解决办法。您能帮助我吗?

您需要使用引用的DOMParser

//此函数执行取消跳过
函数htmlDecode(输入){
var doc=new DOMParser().parseFromString(输入,“text/html”);
返回doc.documentElement.textContent;
}
var str=“星条旗”//任意转义字符串
//按原样将转义字符串呈现到div中
document.getElementById(“printhere\u div”).innerHTML=str;
//使用未转换的字符串设置textarea值
document.getElementById(“printhere\u textarea”).value=htmlDecode(str)
目标div

target textarea
innerHTML
将实际的HTML放入元素中,浏览器将其解释为清晰显示<文本区域的代码>值
正在放置原始文本。如果您没有对文本区域进行解码,会发生什么?对不起,这只是对HTML是什么以及元素如何工作的一个简单误解。如果您设置
&
转换成一个div,它将把它渲染成
&
。。。如果你把它放在一个文本框(或文本区)中,它会逐字显示
&谢谢你的回答。不解码textarea值,它仍显示&;你知道有什么解决办法吗?我怎样才能把文本正确地转换成文本区?通常我会使用PHP,但我需要一个JS解决方案,我假设您的MySQL数据库已经有转义值。这是正确的假设吗?是的。DB包含值&;天哪,谢谢你!!