javascript - 使用 XPath 查找节点后面的文本节点

标签 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> 而找不到第二个在中间。

所以我的问题是如何更改 javascript(而不是 HTML)来查找两个匹配项?

最佳答案

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

关于javascript - 使用 XPath 查找节点后面的文本节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35916857/

相关文章:

java - XSLT 与 XPAth 2.0 和 Java 表达式

html - 悬停在与 wrapper 相同的背景颜色上

javascript - 实用地将日期字符串转换为 yyyy-mm-dd

javascript - IE8 不支持 querySelectorAll

javascript - 用冒号分隔的正则表达式编号

javascript - 如何检测与 html5 背景视频不兼容的浏览器并改为显示图像?

javascript - ng-keypress 调用 angularjs 中的函数

xml - xsl 1.x如何根据选择更改输出?

ruby - XPath 使用 Nokogiri 返回空数组

javascript - 使用 Jquery 动态添加一个元素到我的表单