jQuery .push() 不工作

标签 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

最佳答案

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

关于jQuery .push() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34470994/

相关文章:

javascript - 时间轴 Vis - 使用子组排序强制子组 2 在子组 1 之后

java - 在线性 (O(N)) 时间内对数组进行排序

javascript - 如何根据 JavaScript 中的键名称比较两个 JSON 值?

java - 二维数组在java中是如何在内存中表示的?

json - Spring @ResponseBody Jackson JsonSerializer 与 JodaTime

javascript - 单击显示下拉菜单

jquery - 如何放大元素并在单击时显示文本

jquery - google bot 会读取通过 jquery event -doucument.ready 获取的数据吗

java - 对于其余请求,验证在 Spring boot 中不起作用

asp.net-mvc - 以 JSON 格式提交表单(无 AJAX)