我有一个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
,但它返回了未定义的值。
请帮忙。
答案 0 :(得分:3)
循环.childNodes
并抓住.nodeValue
的text nodes应该有效:
var foo = document.getElementById('foo'),
txt = '';
[].forEach.call(foo.childNodes, function (subNode) {
if (subNode.nodeType === 3) {
txt += subNode.nodeValue;
}
});
console.log(txt);
.childNodes
是NodeList,不是数组。你不能对它们使用数组方法,foo.childNodes.forEach()
不起作用。
NodeList
个对象是array-like个对象,因此我们可以使用Function.prototype.call
将foo.childNodes
视为真实数组并在其上调用Array.prototype.forEach
我们提供的回调.forEach
会检查每个Node
的{{3}},如果它是文本节点(Node
.nodeType
为{{} 1}})我们将它的值附加到输出缓冲区。
答案 1 :(得分:-1)
我不确定我是否理解正确但如果您需要节点的每个元素的文本,那么对于JQuery,您会这样做:
node.each(function (index){
console.debug($(this).text());
});