6

我已经用谷歌搜索了我的大脑,无法弄清楚如何使这项工作。这是我正在尝试做的事情:

HTML:

<div id=derp>&quot;Hi, my name is..&quot;</div>

Javascript:

var div = document.getElementById('derp');
alert(div.innerHTML);
alert(div.innerText);
alert(div.textContent);

所有这些警报都解释并返回结果字符串中的&quot;as "。我想得到&quot;未经解释的原始文本。

他们都返回:

"Hi, my name is.."

当我想得到

&quot;Hi, my name is..&quot;

有没有办法做到这一点?最好不要尝试使用正则表达式来替换"with的每个实例&quot;

关于我正在尝试做的事情,这是一个很长的故事,但是"由于需要进行其他正则表达式匹配/解析,因此简单地使用 replace() 来搜索和替换每个实例将是一个令人头疼的实现。

提前感谢任何可以挽救我理智的 Javascript 向导!

4

2 回答 2

11

引用bobince

当您向浏览器询问元素节点的 innerHTML 时,它不会为您提供被解析以生成该节点的原始 HTML 源,因为它不再具有该信息。相反,它从存储在 DOM 中的数据生成新的 HTML。浏览器决定如何格式化该 HTML 序列化;不同的浏览器会产生不同的 HTML,而且很可能与您最初格式化它的方式不同。

总之:innerHTML/innerText/text/textContent/nodeValue/indexOf,他们都不会给你未解析的文本。

唯一可行的方法是使用正则表达式,或者您可以将 ajax 发布到页面本身,但这是一种不好的做法。

于 2013-03-14T20:43:30.823 回答
2

几天前我准备了一个带有一些不同方法的垃圾箱:http: //jsbin.com/urazer/4/edit

我最喜欢的:

var text = "<a href='#' title=\"Foo\"></a>");
var html = text.replace(/[<&>'"]/g, function(c) {
  return "&#" + c.charCodeAt() + ";";
});
于 2013-03-14T20:16:03.083 回答