0

私はJqueryとWebアプリケーションの開発に慣れていません。下のオブジェクトとして定義されたJSONファイルを持っています。それを読み、その要素をHTML要素としてWebページに表示したいです。以下のJSONファイルの出力は次のようになります。

            A-1
            AA-0
            AB-0
            AAA-0
            AAB-2
            ABA-0
            ABB-1 

後で、クリックイベントで現在のコンポーネントの下にコンポーネントとそのステータスを表示する予定です

以下のコードを書きました

            <!DOCTYPE html>
            <html>
            <head>

                <script src="jquery-1.9.1.js"></script>
            </head>
            <body>
              <div id="result">

            </div>
            <script>
            var obj = {
                        "component": "A",
                        "status": 0,
                        "children": [
                            {
                                "component": "AA",
                                "status": 0,
                                "children": [
                                    {
                                        "component": "AAA",
                                        "status": 0,
                                        "children": []
                                    },
                                    {
                                        "component": "AAB",
                                        "status": 2,
                                        "children": []
                                    }
                                ]
                            },
                            {
                                "component": "AB",
                                "status": 0,
                                "children": [
                                    {
                                        "component": "ABA",
                                        "status": 0,
                                        "children": []
                                    },
                                    {
                                        "component": "ABB",
                                        "status": 1,
                                        "children": []
                                    }
                                ]

                            }
                        ]
            };
            //Start function
            $(function() {
                var result = $('#result');
                alert("hello");
                procedure(obj);
            });

            //Function to display the list of children of a given object
            function display(dref){

                result.append('<div>' +  dref.component + ' - '+ dref.status +'</div>');    
                $.each(dref.children, function(i, v){
                result.append('<div>' +  v.component + ' - '+ v.status +'</div>');
            });
            };

            //Recursive function to repeatedly check for children of every component
            function procedure(pref){
                display(pref);
                if(pref.children not null)
                {
                    $.each(pref.children, function(i, v){
                    procedure(children)

                    }    
            }   
            };
            </script> 
            </body>
            </html>

いくつかの場所に構文エラーがあります。必要な出力を得るために誰か助けてください。

4

2 に答える 2

1

試す

$(function(){
    var $result = $('#result');
    function process(obj, flag){
        if(!flag){
            $('<li/>').text(obj.component + '-'+obj.status).appendTo($result);
        }

        if(obj.children){
            $.each(obj.children, function(i, v){
                $('<li/>').text(this.component + '-'+this.status).appendTo($result);
            });
            $.each(obj.children, function(i, v){
                process(this, true);
            });
        }
    }

    process(obj);

});

デモ:フィドル

于 2013-04-02T12:46:55.540 に答える