注意把函数中的工作变量定义成局部的(s,ChildCount,k,j)
<style>
table {font-size = 9pt}
td {height = 10px}
</style>
<body>
<span id="menus"></span>
<span id="view"></span>
</body>
<script language="JavaScript">/**
* 基本参数数组,根据具体应用自行扩展
* 数据可较简单的由服务器端提供
* 列1:节点层次
* 列2:节点标题
* 列3: 父节点
* 列4: 是否有子节点,1为有,0为无
* 列5: 作为子节点时的序号
* 其余自行扩充
*/
tree_ar = new Array(
new Array(1,"KB0Child","KB",1,1),
new Array(1,"KB1Child","KB",0,2),
new Array(2,"KB10Child","KB0Child",0,1),
new Array(2,"KB11Child","KB0Child",0,2),
new Array(1,"KB2Child","KB",0,3));menus.innerHTML =maketree("KB");
function maketree(n){
var s = "";
var ChildCount = 0;
//alert("n=" + n);
//找出一个节点有多少个子节点
for(var i=0;i<tree_ar.length;i++){
if(tree_ar[i][2]==n){
ChildCount++;
}
}
//alert("ChildCount= " +ChildCount);
//找出第k个子节点,对这个子节点作maketree操作。
var k=1;
while(k<=ChildCount){
for(var j=0;j<tree_ar.length;j++){
if(tree_ar[j][4]==k && tree_ar[j][2]==n){
s +="<div id='"+tree_ar[j][1]+"'>"+tree_ar[j][1]+"";
s += maketree(tree_ar[j][1]);
//alert(maketree(tree_ar[j][1]));
s +="</div>";
k++;
break;
}
}
//alert(k);
}
//alert(s);
return s;
} </script>
<style>
table {font-size = 9pt}
td {height = 10px}
</style>
<body>
<span id="menus"></span>
<span id="view"></span>
</body>
<script language="JavaScript">/**
* 基本参数数组,根据具体应用自行扩展
* 数据可较简单的由服务器端提供
* 列1:节点层次
* 列2:节点标题
* 列3: 父节点
* 列4: 是否有子节点,1为有,0为无
* 列5: 作为子节点时的序号
* 其余自行扩充
*/
tree_ar = new Array(
new Array(1,"KB0Child","KB",1,1),
new Array(1,"KB1Child","KB",0,2),
new Array(2,"KB10Child","KB0Child",0,1),
new Array(2,"KB11Child","KB0Child",0,2),
new Array(1,"KB2Child","KB",0,3));menus.innerHTML =maketree("KB");
function maketree(n){
var s = "";
var ChildCount = 0;
//alert("n=" + n);
//找出一个节点有多少个子节点
for(var i=0;i<tree_ar.length;i++){
if(tree_ar[i][2]==n){
ChildCount++;
}
}
//alert("ChildCount= " +ChildCount);
//找出第k个子节点,对这个子节点作maketree操作。
var k=1;
while(k<=ChildCount){
for(var j=0;j<tree_ar.length;j++){
if(tree_ar[j][4]==k && tree_ar[j][2]==n){
s +="<div id='"+tree_ar[j][1]+"'>"+tree_ar[j][1]+"";
s += maketree(tree_ar[j][1]);
//alert(maketree(tree_ar[j][1]));
s +="</div>";
k++;
break;
}
}
//alert(k);
}
//alert(s);
return s;
} </script>
table {font-size = 9pt}
td {height = 10px}
</style>
<body>
<span id="menus"></span>
<span id="view"></span>
</body>
<script language="JavaScript">/**
* 基本参数数组,根据具体应用自行扩展
* 数据可较简单的由服务器端提供
* 列1:节点层次
* 列2:节点标题
* 列3: 父节点
* 列4: 是否有子节点,1为有,0为无
* 列5: 作为子节点时的序号
* 其余自行扩充
*/
tree_ar = new Array(
new Array(1,"KB0Child","KB",1,1),
new Array(1,"KB1Child","KB",0,2),
new Array(2,"KB10Child","KB0Child",0,1),
new Array(2,"KB11Child","KB0Child",0,2),
new Array(1,"KB2Child","KB",0,3));menus.innerHTML =maketree("KB");
function maketree(n){
s = "";
ChildCount = 0;
//alert("n=" + n);
document.write("*" + n + "*<br>");
//找出一个节点有多少个子节点
for(i=0;i<tree_ar.length;i++){
if(tree_ar[i][2]==n){
ChildCount++;
}
}
//alert("ChildCount= " +ChildCount);
//找出第k个子节点,对这个子节点作maketree操作。
var k=1;
while(k<=ChildCount){
/************你的习惯不好哦,用变量不声明 begin******************/
for(var j=0;j<tree_ar.length;j++){
/************你的习惯不好哦,用变量不声明 end******************/
if(tree_ar[j][4]==k && tree_ar[j][2]==n){
s +="<div id='"+tree_ar[j][1]+"'>"+tree_ar[j][1]+"";
s += maketree(tree_ar[j][1]);
//alert(maketree(tree_ar[j][1]));
s +="</div>";
k++;
/************************这个break干嘛使的?删掉********************/
//break;
/************************这个break干嘛使的?删掉********************/
}
}
//alert(k);
}
//alert(s);
return s;
} </script>变量使用前最好声明,这样能够确定它的作用域,否则象现在递归时就用行不正常了。