jQuery.push()不工作

jQuery.push()不工作,jquery,arrays,json,forms,html-table,Jquery,Arrays,Json,Forms,Html Table,我在桌子里面有一张表格。每行都有相同的输入字段。datarow是每行的类名。我遍历每一行以获得值 console.log(dataObj)显示每一行输入。但是,字段数组只添加了最后一个对象n次。n=行数 控制台的输出如下所示: 您需要将var dataObj={}位于each()代码块内,以便在每次迭代开始时为空。datarow迭代: $('#create').click(function(){ var metaObj = {}; var dataObj = {}; v

我在桌子里面有一张表格。每行都有相同的输入字段。datarow是每行的类名。我遍历每一行以获得值

console.log(dataObj)显示每一行输入。但是,字段数组只添加了最后一个对象n次。n=行数

控制台的输出如下所示:

您需要将
var dataObj={}位于each()代码块内,以便在每次
迭代开始时为空。datarow
迭代:

$('#create').click(function(){

    var metaObj = {};
    var dataObj = {};
    var fields = [];
    $('#tableform').find(".meta").each(function(){

        metaObj[this.name] = this.value;
    });

    $('.datarow').each(function () {

        $('td > input, select',this).each(function () {
            dataObj[this.name] = this.value;

        });
        console.log(dataObj);
        fields.push(dataObj);
    });

    console.log(JSON.stringify(metaObj));
    console.log(JSON.stringify(fields));
});

Put
var-dataObj={}
each()
代码块内。通过使用
map()
serializeArray()
,您还可以使代码更加简单,但是我们需要查看您的HTML来向您展示如何使用。哦。。男人。。你节省了我的时间。我尝试将var字段设置为=[];每个里面。但是,var dataObj={};在each()中,只需工作助手提供帮助。我加上它作为你的答案。谢谢,我会接受它
$('#create').click(function() {    
    var metaObj = {};
    var fields = [];

    $('#tableform').find(".meta").each(function(){    
        metaObj[this.name] = this.value;
    });

    $('.datarow').each(function () {
        var dataObj = {}; // move declaration here
        $('td > input, select',this).each(function () {
            dataObj[this.name] = this.value;    
        });
        console.log(dataObj);
        fields.push(dataObj);
    });

    console.log(JSON.stringify(metaObj));
    console.log(JSON.stringify(fields));
});