尝试使用jquery each()函数将值放入数组时出错

时间:2012-11-03 12:05:55

标签: javascript jquery each

我有这段代码:

$(".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);

怎么了?

2 个答案:

答案 0 :(得分:0)

必须有两个带有category-add类的文本框。它们是两个以上然后你迭代器我将被赋予一个值&gt; = 2然后你的陈述变成

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

超出了数组的范围。

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

DEMO:http://jsfiddle.net/FFQ2s/