我是javascript的新手,只是尝试从网页中提取链接,所以我正在执行以下操作:
for(link in document.links) {
console.log(link.getAttribute("href");
}
但如果我这样做:
document.links.item(0).getAttribute("href")
返回第一个href
我做错了什么?
以下是我正在测试的网页:http://en.wikipedia.org/wiki/JavaScript_syntax
答案 0 :(得分:4)
只需按标记名称和avoid the for in
loop获取元素。
var links = document.getElementsByTagName('a'),
i;
for(i = 0; i < links.length; i += 1){
console.log(links[i].getAttribute("href"));
}
对于您的示例,您将使用:
for(link in document.links) {
console.log(document.links[link].getAttribute("href"));
}
虽然技术上有效,但除了链接元素之外,它还会返回原型属性。这会抛出错误,因为.getAttribute("href")
对所有返回元素都不起作用。
您可以使用hasOwnProperty()
方法检查..但仍然是avoid the for in
loop。
for (link in document.links) {
if (document.links.hasOwnProperty(link)) {
console.log(document.links[link]);
}
}
答案 1 :(得分:2)
document.links.item
是一系列项目。
document.links.item(0)获取该数组中的第一项。
document.links.item(1)获取该数组中的第二项。
要回答你的问题,你所做错的是你没有像第一个例子那样循环使用links.item数组。
答案 2 :(得分:1)
在您的代码中,您正在访问项目0并且只从中获取href。因此,您只能获得一个链接。
您可能想要做的是立即获取所有链接的href
var hrefs = [], i
for (i=0;i<document.links.length;++i) {
hrefs.push(document.links.item(i).getAttribute('href'))
}
然后你的hrefs数组将包含所有网址