【问题标题】:jQuery .push() not workingjQuery .push() 不工作
【发布时间】:2016-03-31 23:21:17
【问题描述】:
$('#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 = 行数。

控制台的输出在这里:

【问题讨论】:

  • var dataObj = {}; 放入 each() 代码块。您还可以使用map()serializeArray() 使您的代码更简单,但我们需要查看您的HTML 来向您展示如何操作。
  • 哦.. 伙计.. 你节省了我的时间。我试着把 var fields = [];每个里面。但是,var dataObj = {};在 each() 中,刚刚工作
  • 很高兴为您提供帮助。我将其添加为您的答案。
  • 谢谢,我会接受的

标签: jquery arrays json forms html-table


【解决方案1】:

您需要将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));
});

【讨论】:

    猜你喜欢
    • 2018-11-02
    • 1970-01-01
    • 1970-01-01
    • 2017-02-07
    • 2014-03-20
    • 2022-07-16
    • 2016-10-09
    • 2011-06-24
    • 1970-01-01
    相关资源
    最近更新 更多