2012-04-17 8 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 не имеют методов jQuery, таких как .attr(). Это начинает иметь смысл?

videoLinks Переходя к $.makeArray просто не имеет смысла, так как вы либо передавая функцию videoLinks или функцию-местный videoLinks, которая уже объект JQuery. Так что, я думаю, что это больше вдоль линий того, что вы пытаетесь сделать:

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

Это будет регистрировать атрибут каждого элемента <a>href с 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); 
} 
+0

ничего себе, что просто :) хорошо, что это именно то, что я пытался достичь. Большое спасибо. –

+0

ok да моя конечная цель - вернуть одну из ссылок наугад –

+0

Теперь, почему вы не сказали так в первую очередь? ':)' Отредактировано. –

0

Это работает для меня .. (с кодом «Matt Болла» выше)

$("a[id^=a_l_]").each(function() { 
     console.log(this.value); 
    }); 
Смежные вопросы