如何在json中显示每个检查表的输入标记和子检查表?

How do I display input tag and sub checklists for each checklist in json?

本文关键字:检查表 输入 json 显示      更新时间:2023-09-26

我分别有一组问题和子问题。每个问题和子问题都有一个代码。
检查列表是问题。子检查表是子问题。例子:-

<

代码问题/strong>
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'] + '&nbsp;&nbsp;&nbsp;'
            data += val_masterChecklist['checklist'] + '&nbsp;&nbsp;&nbsp;'

            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。

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

我认为你应该格式化或构建你的JSON字符串作为Arrays

那么你有一个问题数组(主要问题),并且对于数组中的每个项目,它的子问题数组(再次)。

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

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

$(this).closest("tr")

代替

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

我还使用了$(this).close ("tr").find(".classname")来查找相对于点击的重复位置