无法构建对象

时间:2017-09-22 00:23:04

标签: javascript arrays object each

我有一个问题我无法解决,也许你们可以帮助我!

我有几个复选框。我需要点击按钮时检查的值。这到目前为止工作。现在我需要使用此信息构建某种对象/数组。

Construct最终必须这样:

[{"ID-Number":"1","ID-Data":"ABCD1234"},{"ID-Number":"2","ID-Data":"DEFG5678"}]

" ABCD1234"和" DEFG5678"是已选中复选框的值。 " ID-Number"每个选中的复选框条目应从1开始计算,从1开始。

我想我可能必须首先构建一个数组,然后为每个数组构建一个数组" entry"然后将这些数组添加到主数组?

我的代码看起来像这样:

listToSubmit = [];

i = "0";

$("input[name=mycheckboxgroup]:checked").each(function () {

    newEntry = [];

    newEntry['ID-Number'] = i++;
    newEntry['ID-Data'] = $(this).val();

    listToSumbit.push(newEntry);

});

console.log(listToSubmit)

感谢您帮助我们开展此工作!

2 个答案:

答案 0 :(得分:2)

您的代码存在一些问题:

  • 您正在listToSumbit.push(newEntry),应该是listToSubmit.push(newEntry)
  • i = "0"开始有点奇怪,可能会导致问题 - 请尝试使用i = 0

有了拼写错误,我强烈建议您在IDE中使用一个好的linter - eslint很棒。它将有助于直接捕获这些错误。

答案 1 :(得分:0)

要获得正确的索引,您可以循环所有复选框:



listToSubmit = []
elements = document.querySelectorAll("input[name=mycheckboxgroup]")

for (i = 0; i < elements.length; i++)
  if (elements[i].checked)
    listToSubmit.push( { 'ID-Number' : i + 1 + '', 'ID-Data' : elements[i].value } )

console.log(JSON.stringify(listToSubmit))
&#13;
<input type='checkbox' name='mycheckboxgroup' value='ABCD1234' checked \>
<input type='checkbox' name='mycheckboxgroup' value='DEFG5678' checked \>
<input type='checkbox' name='mycheckboxgroup' value='XYZ90' \>
&#13;
&#13;
&#13;