我试图获取一系列元素,这些元素的属性名称以" 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;
我认为这会给我3个div,其中包含至少1个属性&#34; temp。&#34;
我错过了什么?
答案 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>