Javascript 创建的对象为空

Javascript 创建的对象为空,javascript,jquery,html,Javascript,Jquery,Html,我试图让一个函数循环两个表中的数据,并将它们放入一个对象中。通过第一个表的第一个for循环可以做到这一点,但是通过第二个表的第二个for循环在只有一行要通过时抛出一个空对象。 但是,当有多行时,所有对象的值都作为第二行 我真的不明白我做错了什么: function foo(){ var rows = $('#table1').find('tr'); var array1 = []; for(var i = 1; i < rows.length-1; i++){

我试图让一个函数循环两个表中的数据,并将它们放入一个对象中。通过第一个表的第一个for循环可以做到这一点,但是通过第二个表的第二个for循环在只有一行要通过时抛出一个空对象。 但是,当有多行时,所有对象的值都作为第二行

我真的不明白我做错了什么:

function foo(){
    var rows = $('#table1').find('tr');
    var array1 = [];
    for(var i = 1; i < rows.length-1; i++){
        var row = $(rows[i]).find('input');
        var o = {
            name : $(row[0]).val(),
            bday : $(row[1]).val(),
            parent : $(row[2]).val(),
            parentBDay : $(row[3]).val(),
            parentNumber : $(row[4]).val()
        };
        array1.push(o);
    }

    var array2 = [];
    rows = $('#table2').find('tr');
    for(var j = 1; j < rows.length-1; j++){
        var row = $(rows[i]).find('input');
        var o = {
            name : $(row[0]).val(),
            bday : $(row[1]).val(),
            phoneNumber : $(row[2]).val()
        };
        console.log('wtf: ' + JSON.stringify(o));
        array2.push(o);
    }
}
函数foo(){
变量行=$('#表1')。查找('tr');
var array1=[];
对于(变量i=1;i
您的问题是for循环中的索引循环得不好。从
1
开始for循环,如果要使用第一个元素,那么它是错误的。注意,索引从
0
开始。如果您故意错过了第一个元素,因为它是标题行或其他内容,那么这不是问题。然而,结束标志,如

< rows.length - 1

这显然是错误的。让我们假设,行数是50。那么它的最后一个指数是50-1=49。如果从1循环到50-1以下的数字,那么最后一个索引将是48,并且将错过最后一个元素。你的条件应该是
或者
你使用
行[i]
而不是
行[j]
你所说的
$(行[4]).val()是什么意思,以及为什么我和j从1开始而不是0?伙计们,不要否决这个选项。他显然是个初学者。我们都是初学者。让我们善待他,了解他的处境。他的问题很清楚,他试图写一个代码。有什么问题?尽管这个问题不是很好,我还是投票支持初学者。@LajosArpad+1也是出于同样的原因。