2

我正在尝试获取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"));
    });
}
4

2 回答 2

4

$.makeArray返回原生 JavaScript 数组,而不是 jQuery 对象。本机 JavaScript 数组没有 jQuery 方法,如.attr(). 这开始有意义了吗?

简单地传递videoLinks$.makeArray没有意义,因为你要么传递 function ,要么传递已经是jQuery 对象videoLinks的 function-local 。所以,我认为这更符合你想要做的事情:videoLinks

function videoLinks() {
    $("a[id^=a_l_]").each(function() {
        console.log(this.href);
    });
}

这将记录每个以开头的元素的href属性。也许相反,您想构建这些属性的数组而不是记录它们。然后你会使用and :<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
}

我的最终目标是随机返回其中一个链接

然后你就快到了。只需从hrefs数组中获取一个随机元素:

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);
}
于 2012-04-17T01:08:56.917 回答
0

这对我有用..(来自上面的“Matt Ball”代码)

$("a[id^=a_l_]").each(function() {
        console.log(this.value);
    });
于 2012-07-25T17:48:26.807 回答