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

时间:2017-07-07 03:24:08

标签: 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>
&#13;
&#13;
&#13;

我认为这会给我3个div,其中包含至少1个属性&#34; temp。&#34;

我错过了什么?

1 个答案:

答案 0 :(得分:3)

我认为您在将属性名称检查应用为过滤条件时,正在寻找与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>