我一直在试图永远但它只是不工作,我怎么能检查网址,我得到了(document.getElementsByTagName('a').href;
)的阵列,看看是否有任何网站都在另一阵列?JavaScript的 - 让所有的锚标签,并把它们比作一个数组
回答
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(结果集中的第一个)来获取锚点标记有一个方便的方法可能会很有用。每下面的评论,包括片段创建IE8的indexOf和切换document.getElementsByTagName到document.links获得对象的动态列表。
getElementByTagName为您提供了一个nodelist(节点数组)。
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);
});
这是非常简单的,虽然 - 会真的使用jQuery是更容易?我认为它可能实际上需要更多的字符是'$()。attr('blahblah')等。 – 2010-10-02 07:31:32
@Mark:我添加了一个jQuery的例子。正如你所看到的那样,输入更少。 – some 2010-10-02 07:42:33
使用jQueryü可以做一些事情像这个 -
$('a').each(function(){
if(urls.indexOf(this.href) !- -1)
alert('match found - ' + this.href);
})
网址是需要用比较现有的阵列。
- 1. 比较函数的结果,并把它们作为矩阵MATLAB
- 2. 如何解析输入[]值,并把它们放入一个Javascript数组
- 3. 的Javascript:从对象的数组中提取对象,并把它们放入一个新的数组
- 4. 添加总量并把它添加到一个新的标签
- 5. 查找数组值并比较它们?
- 6. 独立的数据,并把它们放入数组(PHP)
- 7. 查找所有TD标签并读取它们的数据属性
- 8. 查找并阅读所有选中的复选框,并在一个数组把他们的名字
- 9. 单独的对象,并把它们分成两人一组
- 10. jquery验证 - 组和它们的标签
- 11. 给定一个包含字符的数组的数组,找到至少有一个公共字符的所有数组,并将它们作为对返回
- 12. 取一个节点的所有儿童与他们的标签
- 13. 独立的键值对,并把它在另一个数组
- 14. 如何比较JavaScript中的两个数组,即使它们没有排序?
- 15. 计数数组中的元素并将它们进行比较,javascript
- 16. 比较子列表,并把它们合并
- 17. (C++)把一个字符串的每个字符串,并把它放入一个数组,并获得所述数组的大小?
- 18. 没有锚的Bootstrap标签?
- 19. 从火力检索所有值,并把它变成一个TextView
- 20. 比较两个数组并且不能让它返回true
- 21. 获取标签之间的所有字符串并回显它们?
- 22. 比较两个csv并合并它们
- 23. 选择的所有图像标签和禁用它们
- 24. 读取数据,并把它放在一个数组
- 25. Django的taggit如何让所有标签
- 26. 一个锚标记不工作,类似的锚标记工作
- 27. 如何把一个HTML按钮(输入标签)作为JSON数组JSON对象
- 28. 我可以使用array.join获取数组中的所有整数并将它们合并为一个int吗?
- 29. 锚标签作为按钮没有href
- 30. 从数组中拉出多个元素并专门给它们加上标签
注意* Array.prototype.indexOf()*没有在IE 8及以上的实施,将需要额外的片段界定方法。还要注意你的列表是静态的。您可以使用* document.links *在页面上获取* A *和* AREA *元素的动态集合。 – 2010-10-02 22:55:04
@安迪E感谢您的信息。我认为indexOf的实现无处不在。最近我一直在使用jQuery,我完全分开了document.links。 – Gabriel 2010-10-03 01:47:54