问题描述
我有一棵树,数据为:这是没有加入递归一级的情况,代码如下:var zNodes = new Array();for(i=0;i<treenodes.length;i++){if(treenodes[i].parent==0){getNodeBy(treenodes[i]);zNodes.push(treenodes[i]);}}function getNodeBy(pnode){for(j=0;j<treenodes.length;j++){if(treenodes[j].parent==pnode.catid){addToNode(pnode,treenodes[j]);//getNodeBy(treenodes[j]);<--递归}}}function addToNode(pnode,node){if(pnode.childs==undefined||pnode.childs==null||pnode.childs==''){pnode.childs = new Array();pnode.childs.push(node);} else {pnode.childs.push(node);}}$(document).ready(function(){$.fn.zTree.init($("#categorytree"), setting, zNodes);});其实在asp.net洗面还有一级目录,但是加入递归后【即去掉注释处】得到如下结果只是在第一次获得叶子之后就返回了,没有得到兄弟节点,大家帮我看看是什么问题呢?我的数据是这样的:var temp = new Object();temp.catid=11;temp.parent=10;temp.name='Asp.net';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=11';treenodes.push(temp);var temp = new Object();temp.catid=10;temp.parent=0;temp.name='C#语言';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=10';treenodes.push(temp);var temp = new Object();temp.catid=9;temp.parent=0;temp.name='C/C++语言';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=9';treenodes.push(temp);var temp = new Object();temp.catid=14;temp.parent=13;temp.name='Extjs';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=14';treenodes.push(temp);var temp = new Object();temp.catid=18;temp.parent=13;temp.name='Flash编程和RIA应用';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=18';treenodes.push(temp);var temp = new Object();temp.catid=5;temp.parent=3;temp.name='Hibernate框架';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=5';treenodes.push(temp);var temp = new Object();temp.catid=7;temp.parent=3;temp.name='iBATIS框架';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=7';treenodes.push(temp);var temp = new Object();temp.catid=8;temp.parent=3;temp.name='JavaEE服务器';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=8';treenodes.push(temp);var temp = new Object();temp.catid=16;temp.parent=13;temp.name='JavaScript';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=16';treenodes.push(temp);var temp = new Object();temp.catid=3;temp.parent=0;temp.name='Java编程和Java企业应用';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=3';treenodes.push(temp);var temp = new Object();temp.catid=15;temp.parent=13;temp.name='Jquery';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=15';treenodes.push(temp);var temp = new Object();temp.catid=4;temp.parent=3;temp.name='Spring框架';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=4';treenodes.push(temp);var temp = new Object();temp.catid=6;temp.parent=3;temp.name='Struts框架';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=6';treenodes.push(temp);var temp = new Object();temp.catid=37;temp.parent=11;temp.name='test';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=37';treenodes.push(temp);var temp = new Object();temp.catid=38;temp.parent=11;temp.name='test2';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=38';treenodes.push(temp);var temp = new Object();temp.catid=17;temp.parent=13;temp.name='UI设计';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=17';treenodes.push(temp);var temp = new Object();temp.catid=13;temp.parent=0;temp.name='Web前端技术';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=13';treenodes.push(temp);var temp = new Object();temp.catid=12;temp.parent=10;temp.name='Winform';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=12';treenodes.push(temp);var temp = new Object();temp.catid=21;temp.parent=0;temp.name='其他';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=21';treenodes.push(temp);var temp = new Object();temp.catid=19;temp.parent=0;temp.name='数据库相关';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=19';treenodes.push(temp);var temp = new Object();temp.catid=1;temp.parent=0;temp.name='未分类';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=1';treenodes.push(temp);var temp = new Object();temp.catid=20;temp.parent=0;temp.name='移动编程和手机应用开发';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=20';treenodes.push(temp);var zNodes = new Array(); 问题补充:居然真是这问题……偷懒没写居然遇到这种问题……
解决方案
i和j你都不定义就使用?这样会使得它们成了全局变量,从而递归时j被影响到了。