我正在尝试获取包含字符串的所有元素:
function getElementsByText( text, ctx) {
return document.evaluate(
"//*[.='"+text+"']",
ctx || document,
null,
XPathResult.ORDERED_NODE_ITERATOR_TYPE,
null
).iterateNext();
}
var searchString = "Name";
var parents = getElementsByText(searchString);
for (var i = 0; i < parents.length; i++) {
parents[i].style.opacity = .2;
};
文档说 evaluate
with ORDERED_NODE_ITERATOR_TYPE
返回“与表达式匹配的所有节点”。但 getElementsByText
仅返回第一个匹配项。
此代码不起作用,因为 parents
不可迭代。
如何获取所有元素?
最佳答案
如果您调用evaluate
方法,您将得到https://www.w3.org/TR/DOM-Level-3-XPath/xpath.html#XPathResult只要您想要选定节点集的下一个节点,您就需要调用 iterateNext 。如果你想要一个数组,那么就这样做
function getElementsByText( text, ctx) {
var results = [];
var xpathResult = document.evaluate(
"//*[.='"+text+"']",
ctx || document,
null,
XPathResult.ORDERED_NODE_ITERATOR_TYPE,
null
);
var node;
while ((node = xpathResult.iterateNext()) != null) {
results.push(node);
}
return results;
}
关于javascript - 在 JavaScript 中使用 XPath 查找包含字符串的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36846342/