2012-05-09 155 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')'例如)。 –