2016-02-24 4 views
0

Итак, я пытаюсь разработать собственное расширение для Chrome. Для первой попытки я хочу создать расширение, которое собирает все ссылки на странице в одном месте.
Поскольку я не знаю, какие ссылки есть, мне нужно получить ссылку href и соединить текст, выбрав их атрибуты.
Ссылка селектор атрибутов href работал отлично, но я не могу получить текст ссылки, используя мой код. Он всегда возвращает undefined. Вот мой код:
$("a[href^='http']").eq(i).innerHTML
(я переменная в цикле, просто делать вид, что это какое-то число)
$("a[href^='http']").eq(i) должен возвращать элемент, не так ли? Так что я пропущу?Получение текста ссылки с jQuery

Вот отрывок, чтобы показать, что я имею в виду:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<!DOCTYPE html> 
 
<html> 
 

 
<body><a href="https://www.google.com/">link1</a><a href="https://www.google.com/">link2</a><a href="https://www.google.com/">link3</a> 
 
</body> 
 
<p id="log">Pretend this is the console: </p> 
 
<script> 
 
    for (var i = 0; i < document.links.length; i++) { 
 
    document.getElementById("log").innerHTML += ($("a[href^='http']").eq(i).attr("href") + " (" + $("a[href^='http']").eq(i).innerHTML + ")/"); 
 
    } 
 
</script> 
 

 
</html>

+0

использование JQuery путь '$ ('а'). Атр ('HREF')' дать этому попытку – guradio

ответ

0

innerHTML является метод, а не свойство, использовать его так: $("a[href^='http']").eq(i).innerHTML()

Чтобы уточнить, в .eq(i) метод возвращает а не DOMElement, но объект jQuery. Объекты jQuery имеют метод innerHTML() - который возвращает строку html внутри элемента, на который ссылается объект jQuery.

На стороне заметки - видя, как вы хотите получить текст, а не html, может быть, вам лучше будет использовать метод .text()?

+0

Да, спасибо за разъяснения. Это очень полезно :) –

0

Я предполагаю ссылку ниже будет перенастроен селектором

<a href="http://chat.stackoverflow.com" class="js-gps-track" data-gps-track="site_switcher.click({ item_type:6 })">chat</a> 

, если вы хотите получить текст Link попробуйте

$("a[href^='http']").eq(i).text() 

, если вы хотите получить Link URL попробуйте

$("a[href^='http']").eq(i).attr('href') 
0

Получить все a тег и повторить его, вы можете получить HREF значения как код ниже:

$("body").find('a').each(function() { 
    console.log($(this).attr('href')); 
}); 

Проверить это, https://jsfiddle.net/mogaax3g/

0

Вы можете получить код выше, чтобы работать следующим образом. Как уже упоминалось в комментариях, JQuery возвращает объект JQuery. Для доступа к фактическому элементу используйте индекс после объекта JQuery.

$("a[href^='http']")[i].innerHTML 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<!DOCTYPE html> 
 
<html> 
 

 
<body><a href="https://www.google.com/">link1</a><a href="https://www.google.com/">link2</a><a href="https://www.google.com/">link3</a> 
 
</body> 
 
<p id="log">Pretend this is the console: </p> 
 
<script> 
 
    for (var i = 0; i < document.links.length; i++) { 
 
    document.getElementById("log").innerHTML += ($("a[href^='http']").eq(i).attr("href") + " (" + $("a[href^='http']")[i].innerHTML + ")/"); 
 
    } 
 
</script> 
 

 
</html>

Смежные вопросы