2012-05-09 168 views
0

我想瀏覽所有(網頁)的含有特定屬性(如所有的「a」標籤具有屬性「稱號」的鏈接。
我怎樣才能做到這一點?瀏覽網頁的標籤

+0

http://api.jquery.com/category/selectors/ – dgabriel

+0

什麼是「瀏覽所有環節」是什麼意思? – lucuma

+0

@dgabriel:我錯過了jQuery標籤嗎? –

回答

3
var links = document.getElementsByTagName('a'),//Or also document.links 
withTitle = []; 
for(varn=0;n<links.length;n++) 
    if(links[n].getAttribute('title')) 
     withTitle.push(links[n]); 

或者使用jQuery:

var withTitle = $('a[title]'); 
+0

好,非常感謝你,我沒有想到一個快速的答案 – user1319236

0

如何節點列表是文檔對象document.links的默認屬性,你可以遍歷的是,像這樣:

for (var i=0;i<document.links.length;i++) 
{ 
    if (document.links[i].hasOwnProperty('title')) 
    { 
     linksWithTitle.push(document.links[i]); 
    } 
} 

或有關這一主題的任何variaton

編輯

我做了一些挖掘,也許是另一種方法是使用treewalker:

function byTitle(node) 
{ 
    if (node.hasOwnProperty('title')) 
    { 
     return NodeFilter.FILTER_ACCEPT; 
    } 
    return NodeFilter.FILTER_SKIP; 
} 

function getElementsWithTitle(root) 
{ 
    root = root || document.links; 
    var treeWalker,result; 
    treeWalker = document.createTreeWalker(root,NodeFilter.SHOW_ELEMENT,byTitle,false); 
    result = [treeWalker.currentNode]; 
    while(treeWalker.nextNode()) 
    { 
     result.push(treeWalker.currentNode); 
    } 
    return result; 
} 

還有很多東西要treeWalkers和NodeFilters/NodeLists比這個,但this是一個很好的介紹整個概念。

最後,如果你不關心IE兼容性:document.querySelectorAll('a[title]');會做的伎倆

+0

好吧,我明白了,但爲什麼我們會使用這個屬性無論如何,我們可以直接列表爲什麼涉及「文件」屬性? – user1319236

+0

你是什麼意思:'我們可以直接使用列表' - 如果你指的是jQuery選擇器:它基本上在屏幕後面執行類似的代碼。不同的是,使用純JS更快,並且不需要加載大量的lib。 'document.links'是一個節點列表,所以你也可以使用'namedItem()'方法......這可能證明是有用的('$('#someId')'比'document.links .namedItem('someId')'例如)。 –