未捕获的TypeError:无法读取属性' indexOf'在javascript中未定义

时间:2017-06-09 03:01:26

标签: javascript jquery

var id    = $('.getval_'+product_id+''+index+'').attr("id");
var value = "";

console.log(id);
//data that return by id
6059
s2id_6061
6122
s2id_8410

if (id.indexOf('s2id_') > 0) {
    value = $('.getval_'+product_id+''+index+'').select2('val');
}else{      
    value = $('.getval_'+product_id+''+index+'').val();
}

问题: 上面的代码显示,当 ID 返回jquery时,它会显示一个数据列表,所以我想要的是当 ID 返回时,如果在前面 ID 没有 s2id _ 它会发出其他声明。但代码返回错误(未捕获TypeError:无法读取属性' indexOf'未定义)

1 个答案:

答案 0 :(得分:4)

您需要检查id本身是否已设置,并且有两种方法可以解决此问题。

if (id.indexOf('s2id_') > 0)条件链接到检查if的外id条件中:

if (id) {
    if (id.indexOf('s2id_') > 0) {
        value = $('.getval_'+product_id+''+index+'').select2('val');
    }else{      
        value = $('.getval_'+product_id+''+index+'').val();
    }
}

或使用语句检查两个条件:

if (id && id.indexOf('s2id_') > 0) {
    value = $('.getval_'+product_id+''+index+'').select2('val');
}else{      
    value = $('.getval_'+product_id+''+index+'').val();
}

希望这有帮助! :)