使用javascript从网页检索链接

时间:2014-09-06 17:10:46

标签: javascript hyperlink

我是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

3 个答案:

答案 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"));
}

Example Here


对于您的示例,您将使用:

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数组将包含所有网址