我想得到这个(一个对象中有四个键和值):
[{"sms":"Y","email":"Y","phone":"Y","oto":"Y"},{"sms":"N","email":"N","phone":"N","oto":"N"}]
但结果是:
[{"sms":"Y"},{"email":"Y"},{"phone":"Y"},{"oto":"Y"},{"sms":"N"},{"email":"N"},{"phone":"N"},{"oto":"N"}]
这是我的代码:
var chkObj = {};
var chkArray = [];
var cntchk = 1;
$("tbody input").each(function(idx){
var Nm = $(this).attr("name");
this.checked ? chkObj[Nm] = 'Y' : chkObj[Nm] = 'N';
cntchk++;
if(cntchk = 4){
chkArray.push(chkObj);
chkObj = {};
cntchk = 1;
}
});
答案 0 :(得分:1)
你能告诉我们表格吗?这给出了有限的答案范围。
但如果我猜对了,你有一个表格,你有以下字段短信,电子邮件,电话,然后oto,对吗?
所以你需要做的是,不是为每个输入做这件事,你必须为四个输入做一次。 意思是你必须设置chkObj ['sms'],chkObj ['email'],chkObj ['phone'],然后chkObj ['oto']然后再做chkArray.push(chkObj)。
答案 1 :(得分:0)
你错过了这个表达式中的第二个等号:
if(cntchk = 4){
,所以不是比较,而是分配。将其更改为if(cntchk == 4){
答案 2 :(得分:0)
如果有条件,你错过了一个“=”签到。 试试这个:
var chkObj = {};
var chkArray = [];
var cntchk = 1;
$("tbody input").each(function(idx){
var Nm = $(this).attr("name");
this.checked ? chkObj[Nm] = 'Y' : chkObj[Nm] = 'N';
cntchk++;
if(cntchk **==** 4){
chkArray.push(chkObj);
chkObj = {};
cntchk = 1;
}
});