箇条書きリストに入れたい JSON があります。各レベルには、name フィールドと children フィールドがあります (最下位レベルを除く)。再帰を使用してそれを実行しようとしましたが、問題が発生しました。最後のレベルを除いて、最初の子のみが表示されます。再帰呼び出しの一部が適切に返されない可能性があると感じています。これが私がこれまでに持っているコードです:
function load_menu(){
json_text=ajax_get("example.json");
json_tree=JSON.parse(json_text);
write_menu(json_tree.children,document.getElementById("level1"));
}
function write_menu(json,element){
for(i=0;i<json.length;i++){
var listitem=document.createElement("li");
element.appendChild(listitem);
var listitemtext=document.createElement("span");
listitem.appendChild(listitemtext);
listitemtext.innerText=json[i].name;
if(json[i].children){
listitemtext.setAttribute("onclick","toggle(this);");
var sublist=document.createElement("ul");
listitem.appendChild(sublist);
write_menu(json[i].children,sublist);
};
};
}
最終的には次のようなツリーになります。
Level 1,1
Level 2,1
Level 3,1
Level 3,2
次のようになります。
Level 1,1
Level 2,1
Level 3,1
Level 3,2
Level 2,2
Level 1,2
Level 2,3
私は自分の JSON を確認しましたが、問題ないようですので、どこかで再帰に問題があるに違いないと思います。誰か助けてくれませんか?