在具有XPath

时间:2016-03-10 12:44:11

标签: javascript html xpath

我正在尝试使用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)来查找两个匹配项?

1 个答案:

答案 0 :(得分:2)

将XPath表达式更改为//*[text()[contains(.,"$")]],因为它选择具有包含$符号的文本子节点的元素。