![]() |
|
首页 │ Apache │ Linux│ Java│ MySQL│ 注册│帮助 | |||
相关问题
最近写个JS菜单碰到JS递归变量范围的问题,
递归到下一级时,上一级的变量值也递归过去了.有没有好的解决方法? 在PHP和C中变量的范围是局部的.
急~~~~~~~~ 求救
以下为代码[PHP]
<script language="JavaScript1.3">
//建树 初始化为一个列表结点
function Tree(){
this.root = document.getElementById('root');
this.i = 0; //结点数
this.nodes = new Array();
this.addNode = addNode;
this.createTree = createTree;
this.expandFold = expandFold;
this.hasChilds = hasChilds;
}
//添加结点
function addNode(id, pid, data){
this.nodes[this.i++] = new Array(id, pid, data);
}
function createTree(pid){
//遍历数组, 增加节点
tmp_arr = this.hasChilds(pid);
if( tmp_arr.length!=0){
document.write('
- ');
- '+tmp_arr[t][2]);
this.createTree(tmp_arr[t][0]);
}
document.write('
for(t = 0 ; t < tmp_arr.length ; t++){
document.write('
}else{
return;
}
}
function expandFold(){
}
//private 查找子树
function hasChilds(pid){
var tmp_arr2 = new Array();
var i_tmp = 0;
for(t = 0 ; t < this.i ; t++){
if(this.nodes[t][1] === pid){
tmp_arr2[i_tmp] = new Array();
tmp_arr2[i_tmp++] = this.nodes[t];
}
}
return tmp_arr2;
}
//使用实例
tree = new Tree();
//此处可以用模板调用数据
/*
{loop $nodes $node}
tree.addNode($node[id], $node[pid], '$node[data]');
{/loop}
*/
tree.addNode(1, 0, 'data1');
tree.addNode(2, 0, 'data2');
tree.addNode(3, 0, 'data3');
tree.addNode(4, 0, 'data4');
tree.addNode(5, 0, 'data5');
tree.addNode(6, 3, 'data6');
tree.addNode(7, 3, 'data7');
tree.addNode(8, 3, 'data8');
tree.addNode(9, 3, 'data9');
tree.addNode(10,3, 'data10');
tree.createTree(0);
</script>
[/PHP]
提问者:heyond 08-15 09:09
答复

