用XPath查找HTML節點或元素

更新版之後會在個人新博客更新,請您移步 https://blog.clso.fun/posts/2019-03-03/46.htmlhtml

 

雖然JQ和JS都能很方便的查找包含了ID及類名的元素,但某些狀況下,咱們須要查找一些不包含類名、ID的元素或節點,就須要XPath來幫忙了。node

XPath雖然是被設計用來搜尋XML文檔的,不過它也能很好的在HTML文檔中工做,而且大部分瀏覽器也支持經過XPath來查詢節點。瀏覽器

XPath既然叫Path,就是以路徑的形式來指定元素。關於XPath的語法,這裏很少贅述,請自行查詢相關資料。函數

 

XPath的查詢函數,在IE中與其餘瀏覽器(Chrome、Firefox、Opear等)是不同的,因此若是你的網站須要兼容IE,須要注意。post

Xpath在IE中的查詢函數爲 document.selectNodes(xpath),其返回的是一個集合,經過for循環就能夠讀取全部的元素。學習

var nodes=document.selectNodes("//a[@href]");
for (i=0;i<nodes.length;i++){
    // 對 nodes[i] 執行操做;
}

// 這裏要注意,IE對於元素的默認索引序列是從0開始的,不符號W3C標準
// 添加下面這行代碼,讓其符合W3C標準
document.setProperty("SelectionLanguage","XPath"); //設置語言選擇
nodes=document.selectNodes("//div[1]");

 

而其餘瀏覽器的查詢函數,調用就稍微複雜一點,都是採用 document.evaluate 這個函數,返回的是一個枚舉集合,須要使用 while 循環來枚舉元素。網站

var result = document.evaluate("//a[@href]", document, null, XPathResult.ANY_TYPE, null);
var nodes = result.iterateNext(); //枚舉第一個元素
while (nodes){
    // 對 nodes 執行操做;
    nodes=result.iterateNext(); //枚舉下一個元素
}

// 若是隻查找單個元素,能夠簡寫成這樣
nodes=document.evaluate("//div[1]", document).iterateNext();

 

花了一晚學習的,留個標記,防止之後忘了lua

相關文章
相關標籤/搜索