使用JavaScript获取innerHTML文本时的问题

时间:2014-12-22 08:14:16

标签: javascript html

在下面的代码中,我提取了html元素的innerHTML文本。

if(a.tagName){
if("option"==a.tagName.toLowerCase())
    return a.text.replace(/\u00A0/g," ");
if("select-one"==a.type||"select-multiple"==a.type)
    return this.getSelectBoxText(a,!1);
}
if(this._isIE()||this.isSafariLike()&&!this._isChrome())
    return a.innerText||a.textContent||"";
var b=a.innerHTML;
return!b||-1==b.indexOf("\x3cbr")&&-1==b.indexOf("\x3cBR")?a.textContent:document.createElement?  (b=document.createElement(a.tagName),b.innerHTML=a.innerHTML.replace(/<br[\/]*>/ig," "),b.textContent):a.textContent
};

上面的代码为所有HTML元素返回正确的innerHTML文本。当任何HTML元素包含带有特殊字符代码的文本时会出现问题,例如:<a id="oopID1" href="...">OOP &ndash; Java</a> [在页面中显示&#34; OOP - Java &#34;]。< / p>

然后它不返回实际渲染的文本(意思是&#34; OOP - Java&#34;)。

如何获得页面中显示的实际值。

在此先感谢。

[注意:我不想使用jQuery。]

2 个答案:

答案 0 :(得分:3)

使用textContent检索元素的文本内容:

document.getElementById("oopID1").textContent

请参阅小提琴HERE

有用的链接:

textContent documentation

innerHTML documentation

innerText vs innerHTML

答案 1 :(得分:2)

使用innerText而不是innerHTML,因为前者将值作为文本获取,后者将其作为标记。