【问题标题】:Can't get object constructed无法构造对象
【发布时间】:2018-03-03 11:08:31
【问题描述】:

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

我有几个复选框。我需要单击按钮时选中的值。到目前为止有效。现在我需要用这些信息构造某种对象/数组。

最终的构造必须是这样的:

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

“ABCD1234”和“DEFG5678”是选中复选框的值。对于每个选中的复选框条目,“ID-Number”应从 1 开始计数。

我想我可能必须先构建一个数组,然后为每个“条目”构建一个数组,然后将这些数组添加到主数组?

我的代码如下所示:

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)

感谢您提供的帮助!

【问题讨论】:

    标签: javascript arrays object each


    【解决方案1】:

    你的代码有几个问题:

    • 你在做listToSumbit.push(newEntry),应该是listToSubmit.push(newEntry)
    • i = "0" 开头有点奇怪,可能会导致问题 - 请改用i = 0

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

    【讨论】:

    • 非常感谢您指出这些错别字。现在我开始了 :) 最后一件事是我现在如何获得需要的输出?为什么它在控制台中两次输出console.log(有两个条目)?我需要像最后的示例一样将其“字符串化”...
    • 尝试JSON.stringify( listToSubmit ) 获取字符串版本。
    【解决方案2】:

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

    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))
    <input type='checkbox' name='mycheckboxgroup' value='ABCD1234' checked \>
    <input type='checkbox' name='mycheckboxgroup' value='DEFG5678' checked \>
    <input type='checkbox' name='mycheckboxgroup' value='XYZ90' \>

    【讨论】:

      猜你喜欢
      • 2016-10-18
      • 1970-01-01
      • 1970-01-01
      • 2016-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-29
      • 1970-01-01
      相关资源
      最近更新 更多