2016-04-25 43 views
1

我試圖讓包含字符串的所有元素:發現含有使用XPath字符串中的所有元素的JavaScript

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; 
}; 

文檔說evaluateORDERED_NODE_ITERATOR_TYPE返回「表達式匹配的所有節點」。但getElementsByText只返回第一個匹配項。

此代碼不起作用,因爲parents不可迭代。

如何獲取所有元素?

+1

看看這個例子http://jsfiddle.net/Xotic750/kjD8r/ –

回答

2

如果您撥打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; 
} 
相關問題