我正在尝试获取页面上所有链接的所有href
标记,并将它们放入数组中。我有以下代码,但是当我检查控制台时,我收到错误Uncaught TypeError: Object has no method 'attr'
我不确定从哪里开始。有什么想法吗?
代码
function videoLinks() {
var videoLinks = $("a[id^=a_l_]").each(function() {
var linkArray = jQuery.makeArray(videoLinks);
console.log(linkArray.attr("href"));
});
}
答案 0 :(得分:4)
$.makeArray
返回本机JavaScript数组,而不是jQuery对象。原生JavaScript数组没有像.attr()
这样的jQuery方法。这开始有意义吗?
将videoLinks
传递给$.makeArray
根本没有意义,因为您要么传递函数videoLinks
,要么传递函数本地videoLinks
已经一个jQuery对象。所以,我认为这更像是你想要做的事情:
function videoLinks() {
$("a[id^=a_l_]").each(function() {
console.log(this.href);
});
}
这将使用以href
开头的<a>
记录每个id
元素的'a_l_'
属性。也许你想建立一个href
属性的数组,而不是记录它们。然后,您将使用.map()
和.get()
:
function videoLinks() {
var hrefs = $("a[id^=a_l_]").map(function() {
return this.href;
}).get(); // ← note the .get() call
}
我的最终目标是随机返回其中一个链接
然后你快到了。 Just get a random element from the hrefs
array:
function videoLinks() {
var hrefs = $("a[id^=a_l_]").map(function() {
return this.href;
}).get(); // ← note the .get() call
var randHref = hrefs[Math.floor(Math.random() * hrefs.length)];
console.log(randHref);
}
答案 1 :(得分:0)
这对我有用..(来自上面的'Matt Ball'代码)
$("a[id^=a_l_]").each(function() {
console.log(this.value);
});