javascript - 创建的对象为空

标签 javascript jquery html

我正在尝试获取一个函数来循环遍历两个表中的数据并将它们放入一个对象中。通过第一个表的第一个 for 循环做得很好,但是通过第二个表的第二个 for 循环在只有 1 行要通过时吐出一个空对象。 但是,当超过 1 行时,所有对象的值都作为 second 行。

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

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

最佳答案

你的问题是 for 循环中的索引没有很好地循环。您从 1 开始 for 循环,如果你想使用第一个元素,那就错了。请注意,索引从 0 开始.如果您故意错过第一个元素,因为它是标题行或其他内容,那么这不是问题。但是,结束标志,如

< rows.length - 1

显然是错误的。假设行数是 50。那么它的最后一个索引是 50 - 1 = 49。如果你从一个循环直到你到达低于 50 - 1 的数字,那么你的最后一个索引将是 48,你将错过最后一个元素。您的条件应该是 < rows.length<= rows.length - 1 .

关于javascript - 创建的对象为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30139550/

相关文章:

php - 停止 WordPress 自动显示 <p></p> 标签

javascript - 当我通过 Bootstrap 模型提交表单时,Html "required"属性不起作用

javascript - 如何找到长数组中每个元素的总和?

jquery - 动态更新 "title"属性

javascript - 根据 Svelte 中的变量设置 CSS 类

javascript - 多次使用 setTimeout() 的问题

jquery:反转顺序

javascript - 资源响应被削减

javascript - 当加 1 时字符串不应该是 01

javascript - 仅在使用 jquery 的鼠标按下事件上更改元素 css