jQuery .each返回TypeError:无法调用未定义的方法'indexOf'

时间:2013-09-16 23:10:34

标签: javascript jquery each indexof

我尝试做的是找到包含https的页面上的所有链接,如果有,请执行某些操作。但是,当我使用控制台在Chrome中运行此操作时,我收到类型错误:无法调用方法' indexOf'为null。我在SO上读过如果一个值以undefined的形式返回,那么它就会破坏这个功能。所以我想知道如何忽略没有onclick值的https? (顺便说一下,我慢慢学习javascript / jquery)。感谢

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

    console.log(blah);

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

3 个答案:

答案 0 :(得分:2)

您可以使用选择器

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

仅选择在href中具有“https”和“onclick”属性的锚标记。

参考:Multiple Attribute Selector

答案 1 :(得分:2)

首先检查blah是否存在:

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

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

答案 2 :(得分: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');
        }
    }
});