我正在尝试使用document.evaluate
查找与我的查询匹配的文本节点。我发现的问题是,使用我使用的 XPath,它没有找到跟随另一个元素的文本节点。例如,给定这些条件 ( jsFiddle ):
HTML
<div><p>$100</p></div>
<p>Test test <span>test</span> $100 test</p>
Javascript
var item,
indx = 0,
items = document.evaluate('//*[contains(text(),"$")]', document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
while (item = items.snapshotItem(indx++)) {
if (item.nodeName !== 'SCRIPT') {
console.log(item.textContent);
}
}
此 XPath 只找到第一个 $
,由于 <span>
而找不到第二个在中间。
所以我的问题是如何更改 javascript(而不是 HTML)来查找两个匹配项?
最佳答案
将 XPath 表达式更改为 //*[text()[contains(.,"$")]]
因为它选择具有包含 $
的文本子节点的元素符号。
关于javascript - 使用 XPath 查找节点后面的文本节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35916857/