javascript - 使用 XPath 获取具有以特定字符串开头的属性名称的元素列表

标签 javascript xpath

我正在尝试获取一个元素数组,这些元素的属性名称以“temp”开头(不是属性值,否则我会使用 querySelectorAll)。

但是,我似乎不能完全正确地得到 xpath 表达式。这似乎是我想出的最接近的:

let els = Array.from(document.evaluate(
  `//*/@*[starts-with(name(.), 'temp')]`,
  document,
  null,
  XPathResult.FIRST_ORDERED_NODE_TYPE,
  null
).singleNodeValue);

console.log(els);
<div temp-callback="1" temp-post-callback="4"></div>
<div temp-callback="2"></div>
<div></div>
<div temp-callback="8" temp-post-callback="7"></div>

我假设这会给我 3 个 div,其中至少包含 1 个带有“temp”的属性。

我错过了什么?

最佳答案

我认为您正在寻找与 XPath 匹配的元素,同时应用属性名称检查作为过滤条件:

//*[@*[starts-with(name(), 'temp')]]

var result = document.evaluate("//*[@*[starts-with(name(), 'temp')]]", document, null, XPathResult.ANY_TYPE, null);

var node = result.iterateNext(); 
var nodes = [];
while (node) {
  nodes.push(node);
  node = result.iterateNext();
}
console.log(nodes);
<div temp-callback="1" temp-post-callback="4"></div>
<div temp-callback="2"></div>
<div></div>
<div temp-callback="8" temp-post-callback="7"></div>

关于javascript - 使用 XPath 获取具有以特定字符串开头的属性名称的元素列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44962056/

相关文章:

javascript - 如何使用 then-yield 异步读取模块文件

Xpath 获取子节点值

Java XPath 获取具有特定标签匹配特定文本的所有节点

selenium - 计算与给定xpath表达式匹配的元素数

python - XPath:删除空格功能不起作用

c# - 仅使用 c# selenium 在元素的子元素中通过 xpath 查找

javascript - 在 JavaScript 脚本标签中使用 jinja2(带 flask )呈现数据

javascript - jQuery - 检查输入、文本区域和选择的值是否在同一函数中不为空

javascript - AngularJS - 类似 View - 我应该对多个 Controller 使用相同的 View 吗?

javascript - 异步显示表单元素