如何在json中显示每个核对表的输入标签和子核对表?

时间:2013-03-25 14:40:48

标签: javascript jquery json

我分别有一组问题和子问题。每个问题和子问题都有一个代码 核对清单是个问题。 子检查表是子问题。示例: -

代码问题
4.1 问题1     4.1.1 子问题1

5.1 问题2
    5.1.1 子问题1     5.1.2 子问题2

每个问题旁边都有复选框。当我点击它们时,应显示子问题。

我的问题在于:所有问题的子问题都会在第一个问题下显示出来。

这是我的代码:

var json = $.parseJSON(master_checklists);

        var count_checklists = Object.keys(json).length;
        //console.log("No of checklists:"+count_checklists);
            var flag;
            var data1='';

        $(json).each(function(i,val_masterChecklist)
        {

            data = ++count + ') ' ;
            data += val_masterChecklist['code'] + '   '
            data += val_masterChecklist['checklist'] + '   '


            db.transaction(function (tx) 
            {   
                tx.executeSql('SELECT flag FROM checklists WHERE code ="'+val_masterChecklist['code']+'"', [], function (tx, results)
                {
                    flag = results.rows.item(0).flag;

                    if(flag == 0)
                    {
                        data = '<input type="checkbox" onclick="all_toggle_flag('+val_masterChecklist['code']+',1)">'+'<br>';
                        $("#all_checklists").append(data);
                    }

                    else if (flag == 1 || flag == 2)
                    {

                        data = '<input type="checkbox" onclick="all_toggle_flag('+val_masterChecklist['code']+',0)" checked>'+'<br>';
                        $("#all_checklists").append(data);
                        var checklistcode = chcode_from_schcode(val_masterChecklist['schcode'])

                        if(val_masterChecklist['code']==checklistcode)
                        {

                            data1 = '&nbsp;'+'&nbsp;'+'&nbsp;'
                            data1 += ++count_subchecklist + ') ' ;

                            data1 += val_masterChecklist['subchecklist'];

                            fetch_input_type(val_masterChecklist['data_type'],val_masterChecklist['schcode'],val_masterChecklist['code']);

                        }


                        $("#all_subchecklists").append(data1);
                    }   
                });

            });

                data += '<div id = "all_subchecklists"></div>'+'<br>'+'<br>'; 
                $("#all_checklists").append(data);          
        });

问题和子问题来自json。

分享你的想法来解决这个问题。

谢谢..

2 个答案:

答案 0 :(得分:0)

我认为您应该将JSON字符串格式化或构造为Arrays

所以你有一系列问题(主要问题),对于数组中的每个项目,它都有数组的子问题作为数组(再次)。

如何实现它依赖于您的编程语言,并在JavaScript中解析JSON我相信你会在这里找到很多帮助

答案 1 :(得分:0)

您可以在单击复选框时调用的函数中使用它。

$(this).closest("tr")

而不是

$("#all_checklists").append(data);

我还使用$(this).closest(“tr”)。find(“。classname”)来查找相对于点击内容的重复位置。