【问题标题】:Creating objects with complex variables from checkbox从复选框创建具有复杂变量的对象
【发布时间】:2015-02-12 20:16:50
【问题描述】:

我有一个复选框,每个复选框都有一个类似这样的值:“case-color-id”

例如

  1. case1-red-1
  2. case2-blue-2
  3. case1-blue-4
  4. case3-green-3

我想要做的是用这些值创建一个 json。最终结果会是这样的:

cases:[
    {
      case1:[
             {
               id : '1'
               color: 'red'
             },
             {
               id: '4'
               color: 'blue'
             }
            ],
      case2:[
             {
               id : '2'
               color: 'blue'
             }
            ],
      case3:[
             {
               id : '3'
               color: 'green'
             }
            ]       
       }
      ]     

我需要有关使用 jquery/javascript 插入对象的逻辑方面的帮助

$('#checkbox :checkbox:checked').each(function (index, element) {

        var case = $('this').val().split('-')[0];
        var color = $('this').val().split('-')[1];
        var id = $('this').val().split('-')[2];

   var caseHolderObject = new Object();

   // create objects here and insert the values depending which case it belongs to

   // Then get the jsonString
   var jsonString = JSON.stringify(caseHolderObject));

}

【问题讨论】:

  • 仅供参考,没有“JSON 对象”之类的东西,它们只是普通的旧对象
  • 抱歉,更新了问题。

标签: javascript jquery json


【解决方案1】:
var cases = [{}];
$('#checkbox :checkbox:checked').each(function (index, element) {
    var cas = $(this).val().split('-')[0];
    var color = $(this).val().split('-')[1];
    var id = $(this).val().split('-')[2];
    var obj = {
        id: id,
        color: color
    };
    var ary = [obj];
    if (cases[0][cas]) {
        cases[0][cas].push(obj);
    } else {
        cases[0][cas] = ary;
    }
});
var jsonString = JSON.stringify(cases);

See working DEMO.

【讨论】:

    【解决方案2】:

    检查这个脚本,我在其中尝试了您的大部分要求,如果您需要更新,请告诉我:

        function retriever(){
    var caseObject = new Object();
    $(':checkbox:checked').each(function () {
    
       var caseHolderObject = new Object();
       var caseVal = $(this).val().split('-')[0];
        var color = $(this).val().split('-')[1];
        var id = $(this).val().split('-')[2];
    caseHolderObject['color']=color;
    caseHolderObject['id']=id;
        caseObject[caseVal]=caseHolderObject;
    });
    
       var jsonString = JSON.stringify(caseObject);
        alert(jsonString);
    }
    
    
    HTML :
    <input type="checkbox" value="case1-red-1">
    <input type="checkbox" name="case1" value="case2-red-2">
    <input type="checkbox" name="case2" value="case4-red-4">
    <input type="checkbox" name="case3" value="case3-red-3">
    <button onclick="retriever()">here</button>
    

    【讨论】:

    • 请随时将您的代码添加到答案中并添加可点击的链接。如果您的小提琴将停止工作,您的答案将毫无用处
    猜你喜欢
    • 2014-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    相关资源
    最近更新 更多