我一直在尝试,但它只是不起作用,我如何检查我得到的网址数组(document.getElementsByTagName('a').href;
),以查看是否有任何网站在另一个数组中?
答案 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是您需要与之比较的现有数组。