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

$.makeArrayjQueryオブジェクトではなく、ネイティブJavaScript配列を返します。ネイティブJavaScript配列には、のようなjQueryメソッドはありません.attr()。これは理にかなっていますか?

関数を渡すか、すでにjQueryオブジェクトであるfunction-localを渡すので、に渡すvideoLinksことは$.makeArray単に意味がありません。だから、これはあなたがやろうとしていることに沿っていると思います:videoLinksvideoLinks

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
}

私の最終的な目標は、リンクの1つをランダムに返すことです

その後、あなたはほとんどそこにいます。配列からランダムな要素を取得するだけです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

これは私にとってはうまくいきました..(上記の「マットボール」コードから)

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