Ch Hong
Ch Hong

Reputation: 378

Uncaught TypeError: Cannot read property 'indexOf' of undefined in javascript

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();
}

Question: The code above is show that when the ID return by jquery, then it will show a list of data, so what I want is when the ID return, if the in front of ID don't have s2id_ it will go else statement. But the code return an error which is (Uncaught TypeError: Cannot read property 'indexOf' of undefined)

Upvotes: 3

Views: 31212

Answers (1)

Obsidian Age
Obsidian Age

Reputation: 42304

You need to check whether id itself is set, and there are two ways of going about this.

Either chain the if (id.indexOf('s2id_') > 0) condition inside an outer if condition that checks for id:

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

Or check for both conditions with an and statement:

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

Hope this helps! :)

Upvotes: 4

Related Questions