我正在尝试使用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>
,找不到第二个。{/ p>
所以我的问题是如何更改javascript(而不是HTML)来查找两个匹配项?
答案 0 :(得分:2)
将XPath表达式更改为//*[text()[contains(.,"$")]]
,因为它选择具有包含$
符号的文本子节点的元素。