2013-09-16 2 views
1

Что я пытаюсь сделать, это найти все ссылки на странице, содержащие https, и если они это сделают, сделайте что-нибудь. Однако, когда я запускаю это в Chrome с помощью консоли, я получаю Type Error: Не могу вызвать метод 'indexOf' из null. Я прочитал на SO, что если значение возвращается как неопределенное, то оно прерывает функцию. Поэтому мне интересно, как игнорировать https, которые не имеют значения для onclick? (Кстати, я медленно изучаю javascript/jquery). БлагодаряjQuery .each return TypeError: Невозможно вызвать метод indexOf неопределенного

$("a[href*='https:']").each(function(){ 
    var blah = $(this).attr('onclick'); 

    console.log(blah); 

    if(blah.indexOf('_gaq') === 0){ 
     console.log('contains gaq'); 
    } 
}); 

ответ

2

Вы можете использовать селектор

$("a[href*='https:'][onclick]") 

Чтобы выбрать только якорные теги, которые имеют как 'https' в их HREF, и 'OnClick' атрибуты.

Ref: Multiple Attribute Selector

+0

Я был (это) и скопировать его неправильно, когда я положил его в SO; Я обновил его. Спасибо – Blexy

+0

Я удалил его из своего ответа. В любом случае проблема с селектором была важной частью. – ThinTim

+0

Я согласен с вами, ThinTim. Множественный селектор атрибутов был для меня новым. Спасибо за документацию. – Blexy

0

Очевидно, что нет onclick определены для некоторого <a>. Вы можете добавить логику, чтобы проверить, существует ли onclick или нет.

$("a[href*='https:']").each(function() { 
    var blah = $(this).attr('onclick'); 

    if (blah !== undefined) { 
     if (blah.indexOf('_gaq') === 0) { 
      console.log('contains gaq'); 
     } 
    } 
}); 
2

blah Убедитесь, что существует первая:

$("a[href*='https:']").each(function() { 
    var blah = $(this).attr('onclick'); 

    if (blah && blah.indexOf('_gaq') === 0) { 
     console.log('contains gaq'); 
    } 
}); 
Смежные вопросы