【发布时间】:2019-02-21 14:38:04
【问题描述】:
我正在编写一个解析器,它应该从以下 html 中提取 "Extract This Text":
<div class="a">
<h1>some random text</h1>
<div class="clear"></div>
Extract This Text
<p></p>
<h2></h2>
</div>
我试过用:
document.querySelector('div.a > :nth-child(3)');
甚至使用next sibling:
document.querySelector('div.a > :nth-child(2) + *');
但他们都跳过它并只返回“p”元素。
我在这里看到的唯一解决方案是选择前一个节点,然后使用nextSibling 访问它。
querySelector 可以选择文本节点吗?
文本节点: https://developer.mozilla.org/en-US/docs/Web/API/Text
【问题讨论】:
-
我的解决方法是使用
querySelector选择元素,然后使用Array.from(element.childNodes).find(node => node.nodeName === '#text')提取#text节点 -
在这种情况下,Text 节点是第三个 ChildNode,因此您可以通过以下方式访问其文本:
element.childNodes[2].textContent
标签: selectors-api