0

我有这个代码:

$(".categoty-add").each(function(i) {
            categories[i][0] = $(this).val();
    });

在输出中我得到

TypeError: can't convert undefined to object    
categories[i][0] = $(this).val();

这是我的数组:

    var categories = new Array(2);
    for (i = 0; i < categories . length; ++ i)
    categories [i] = new Array (2);

怎么了?

4

2 回答 2

0

要动态创建一个数组(第一次运行代码),然后更新它,您可以这样做:

/* create empty array, syntax is shortcut for new Array() and just as efficient*/
var categories=[];

$(".categoty-add").each(function(i) {
   if( categories[i] ){ /* if doesn't exist will be undefined and trigger "else"*/
        /* sub array exists, just update it*/
        categories[i][0] = $(this).val();
    }else{ 
        /* create new sub array and give value to first position */
        categories[i] =[ $(this).val()];
    }
});

演示:http: //jsfiddle.net/FFQ2s/

于 2012-11-03T15:57:33.470 回答
0

必须有两个带有 class 的文本框category-add。如果它们超过两个,那么您的迭代器 i 将被分配一个值 >= 2,然后您的语句变为

categories[2][0] = $(this).val();

这超出了数组的范围。

于 2012-11-03T12:22:08.140 回答