jQuery .push()无效

时间:2015-12-26 11:40:22

标签: jquery arrays json forms html-table

$('#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));
});

我在表格中有一个表格。每行都有相同的输入字段。 datarow是每行的类名。我遍历每一行来获取值。

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

控制台的输出在这里: enter image description here

1 个答案:

答案 0 :(得分:2)

您需要将var dataObj = {};放在each()代码块中,以便在每个.datarow迭代开始时它为空:

$('#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));
});