无法读取属性'长度' For循环中的undefined(jQuery)

时间:2014-07-09 08:06:00

标签: javascript jquery arrays for-loop

我的部分代码和'for'循环遇到了一个奇怪的问题。这是奇怪的代码片段:

var length_value = entry_array.length;

console.log(length_value);

for(var k = 0; k <= length_value; k++){
    j = k + 1;
    $.each(entry_array[k], function(key, value){
        post_data = post_data + key + j + '=' + value + '&';
    }); 
}

当我运行代码时,它会将3记录到控制台(这是entry_array数组变量中的元素数。当它运行for循环时,它会给出我Cannot read property 'length' of undefined。我已成功运行for循环,为length_value换出3并且它有效。我试过这个:

length_value = entry_array.length; //Thinking it had something to do with 'scope'

而且:

var length_value = parseInt(entry_array.length) //Thinking it had something to do with the variable type

既不奏效。因此for循环语法是正确的,entry_array.length有一个值,但它不能一起工作。这里发生了什么?谢谢你的帮助!

1 个答案:

答案 0 :(得分:3)

基于0的数组应该从0到< length建立索引,而不是<= length

var length_value = entry_array.length;

console.log(length_value);

for(var k = 0; k < length_value; k++){
    j = k + 1;
    $.each(entry_array[k], function(key, value){
        post_data = post_data + key + j + '=' + value + '&';
    }); 
}

e.g。如果你有3个元素,你想要索引0,1和&amp; 2. <=将给出0,1,2和2。 3

如果还有其他问题,您需要显示数组内容的示例