2012-04-17 66 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$.makeArray根本沒有任何意義,因爲你要麼傳遞函數videoLinks,或者功能本地videoLinks這是已經一個jQuery對象。所以,我認爲這是沿着你想要做什麼線條更:

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

這將記錄每一個<a>元素的href屬性與id'a_l_'開始。也許你想要建立一組這樣的屬性,而不是記錄它們。然後你會使用.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

哇這麼簡單:)嗯,這正是我想要的目的。非常感謝你。 – 2012-04-17 01:13:53

+0

好的我的最終目標是隨機返回一個鏈接 – 2012-04-17 01:16:16

+0

現在,你爲什麼不首先這麼說? ':)'編輯。 – 2012-04-17 01:19:49

0

這爲我工作。(從「馬特·鮑爾」碼以上)

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