JS 递归 循环未完成就被RETURN出来的问题.
在使用JS做递归的树结构时,函数中的FOR被自己给return出来了,导致循环没有完成
var json={
"type":"class",
"text": "root",
"children": [
{
"type":"class",
"text": "children1",
"children": [
{
"type":"class",
"text": "children1_1",
"children": [
{
"type":"value",
"text": "children1_1_value1"
},
{
"type":"value",
"text": "children1_1_value2"
}
]
}
]
},
{
"type":"class",
"text": "children2",
"children": [
{
"type":"value",
"text": "children2_value1"
},
{
"type":"value",
"text": "children2_value2"
}
]
}
]
};
var xml="";
xml += toxml(json['children']);
xml += "";
function toxml(json){
var xml_str="";
for(i=0;i
if(json[i]["type"]=="class"){
xml_str += "";
xml_str += toxml(json[i]['children']);
xml_str += "";
}else{
xml_str += ""+json[i]['text']+"";
}
}
return xml_str;
}
alert(xml);
这里得出的结果是,究其原因是在"children1"节点循环的时候调用了其本身函数,函数有个return,导致了FOR循环的跳出.导致children2没有循环到.
children1_1_value1
children1_1_value2
我想要得到的结果是
children1_1_value1
children1_1_value2
children2_value1
children2_value2