$('#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()代码块中,以便在每个.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));
});