javascript - 获取所有锚标记并将它们与数组进行比较

时间:2010-10-02 07:08:20

标签: javascript

我一直在尝试,但它只是不起作用,我如何检查我得到的网址数组(document.getElementsByTagName('a').href;),以查看是否有任何网站在另一个数组中?

3 个答案:

答案 0 :(得分:12)

getElementByTagName 为您提供节点列表(节点数组)。

var a = document.getElementsByTagName('a');

for (var idx= 0; idx < a.length; ++idx){
    console.log(a[idx].href);
}

我真的建议你使用框架工作,比如jquery。它让你的生活变得更加轻松。

jquery示例:

$("a").each(function(){
  console.log(this.href);
});

答案 1 :(得分:2)

var linkcheck = (function(){
  if(!Array.indexOf){
    Array.prototype.indexOf = function(obj){
  for(var i=0; i<this.length; i++){
    if(this[i]===obj){
      return i;
    }
  }
      return -1;
    }
  }
  var url_pages = [], anchor_nodes = []; // this is where you put the resulting urls
  var anchors = document.links; // your anchor collection
  var i = anchors.length;
  while (i--){
    var a = anchors[i];
    anchor_nodes.push(a); // push the node object in case that needs to change
    url_pages.push(a.href); // push the href attribute to the array of hrefs
  }
  return {
    urlsOnPage: url_pages, 
    anchorTags: anchor_nodes, 
    checkDuplicateUrls: function(url_list){
      var duplicates = []; // instantiate a blank array
      var j = url_list.length;
      while(j--){
        var x = url_list[j];
        if (url_pages.indexOf(x) > -1){ // check the index of each item in the array.
          duplicates.push(x); // add it to the list of duplicate urls
        }
      }
      return duplicates; // return the list of duplicates.
    },
    getAnchorsForUrl: function(url){
      return anchor_nodes[url_pages.indexOf(url)];
    }
  }
})()
// to use it:
var result = linkcheck.checkDuplicateUrls(your_array_of_urls);

这是一个相当直接的纯JavaScript方法实现,用于实现我认为规范所要求的内容。这也使用闭包来让您随时访问结果集,以防您的URL列表随时间变化并且需要检查新列表。我还将生成的锚标签添加为数组,因为我们无论如何都在迭代它们,因此您可以动态更改它们的属性。并且因为通过传递url(结果集中的第一个)来获取锚标记可能是有用的。根据下面的评论,包括为IE8创建indexOf的片段,并将document.getElementsByTagName切换为document.links以获取动态的对象列表。

答案 2 :(得分:0)

使用Jquery你可以做这样的事情 -

$('a').each(function(){
if( urls.indexOf(this.href) !- -1 )
    alert('match found - ' + this.href );
})

urls是您需要与之比较的现有数组。