Javascript textContent返回undefined

时间:2012-04-04 08:13:23

标签: javascript jquery syntax

这是我的代码:

var text1 = "↵,<strong>bla bla</strong>";//here text1 has value
text1 = text1.textContent;//here it is undefined

为什么呢?以及如何解决它?

4 个答案:

答案 0 :(得分:7)

text1是一个普通字符串,而不是DOM元素。

正如您所见in MDNtextContentNode个对象的属性。相反String do not have such a property对象{{3}}。

由于删除标签是一项非常简单的任务,因此添加一个相当大的库是没有意义的(即使jQuery 很好,只要你想用DOM做更多的东西) ,这是一个简单的方法:

var elem = document.createElement('div');
elem.innerHTML = '<strong>hi &amp; bye</strong>';
alert(elem.textContent || elem.innerText || ''); // displays "hi & bte"

答案 1 :(得分:4)

text1是一个字符串,而不是DOM节点。

您需要将HTML转换为DOM(通过将其添加到具有innerHTML的文档或通过编写/查找JS DOM解析器),然后才能在其上使用DOM方法。

答案 2 :(得分:2)

其他人给了你答案,我只是评论。

虽然自DOM 3 Core(大约8年)以来textContent已经存在,但大多数浏览器都实现了(MS专有)innerText属性。所以如果你有一个节点,你可以这样做:

var theTextContent = typeof node.textContent == 'string'? node.textContent : node.innerText;

或写一个更强大的功能。

修改

这是一个完整的解决方案:

function getText(el) {
  return el.textContent || el.innerText || '';
}

var text1 = "<strong>bla bla</strong>"
var d = document.createElement('div');
d.innerHTML = text1;

alert(getText(d)); // bla bla

答案 3 :(得分:0)

您可以使用jQuery执行此类任务。

首先添加对jQuery库的引用,然后就像这样简单:

var text1 = "↵,<strong>bla bla</strong>";//here text1 has value
text1 = $("<div>").html(text1).text();
alert(text1);​

Live test case