我有一个DOM节点如何在其中获取其文本

时间:2014-12-12 08:11:12

标签: javascript html dom

我有一个DOM节点,比方说node,这可能有一些孩子并且里面有文字。我只需要从中获取文字。

我知道node.innerHTML在标签之间提供了整个数据,但我不需要子元素。一旦我得到节点的id How to get text only from the DIV when it has child elements with text using jQuery?,就可以使用jquery来完成。但在这种情况下,我再次找到节点,这是浪费时间。现在我已经有了节点,我只需要获取它的文本。我尝试了node.text,但它返回了未定义的值。 请帮忙。

2 个答案:

答案 0 :(得分:3)

循环.childNodes并抓住.nodeValuetext nodes应该有效:

var foo = document.getElementById('foo'),
    txt = '';

[].forEach.call(foo.childNodes, function (subNode) {
  if (subNode.nodeType === 3) {
    txt += subNode.nodeValue;
  }
});

console.log(txt);

jsBin

.childNodesNodeList,不是数组。你不能对它们使用数组方法,foo.childNodes.forEach()不起作用。

NodeList个对象是array-like个对象,因此我们可以使用Function.prototype.callfoo.childNodes视为真实数组并在其上调用Array.prototype.forEach

我们提供的回调.forEach会检查每个Node的{​​{3}},如果它是文本节点(Node .nodeType为{{} 1}})我们将它的值附加到输出缓冲区。

答案 1 :(得分:-1)

我不确定我是否理解正确但如果您需要节点的每个元素的文本,那么对于JQuery,您会这样做:

node.each(function (index){
console.debug($(this).text());
});