2012-04-17 20 views
2

ページ内のすべてのリンクのすべてのhrefタグを取得し、それらを配列に入れようとしています。私は次のコードを持っていますが、コンソールをチェックするとエラーが発生しますUncaught TypeError: Object has no method 'attr'ここからどこに行くのか分かりません。何か案は?特定の文字列を持つすべてのIDを見つける

コード

function videoLinks() { 
    var videoLinks = $("a[id^=a_l_]").each(function() { 
     var linkArray = jQuery.makeArray(videoLinks); 
     console.log(linkArray.attr("href")); 
    }); 
} 

答えて

4

$.makeArrayネイティブJavaScriptの配列ではなく、jQueryオブジェクトを返します。ネイティブJavaScript配列には.attr()のようなjQueryメソッドはありません。これは理にかなっていますか?あなたはどちらかの機能videoLinks、または機能 - ローカルvideoLinksすでに jQueryオブジェクトで渡しているので、単純に、意味がありませんvideoLinks$.makeArrayに引き渡し

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

'a_l_'で始まるidを持つすべての<a>要素のhref属性を記録します:だから、私は、これはあなたが何をしようとしての線に沿ってより多くのだと思います。代わりに、それらのログの代わりにそれらの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); 
} 
+0

すごい単純な:)だけでなくそれは私が達成しようとしていたまさにです。どうもありがとうございました。 –

+0

okはい私の究極の目標は、リンクのうちの1つをランダムに返すことです。 –

+0

今、なぜ最初にそう言わなかったのですか? ':)'編集されました。 –

0

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