今天的具体问题:一个递归算法,本来使用C#没事,就是走Javascript这条路,这个小问题,搞了我一晚上。惭愧!
1function setChilds(id,state)
2 {
3 //通过当前节点获得他所有子节点
4 var childs=document.getElementsByName("cb"+id);
5 //遍历该节点所有子节点
6 var index=0;
7 for(index=0;index<childs.length;index++)
8 {
9 //设置此子节点状态
10 var child=childs[index];
11 child.checked=state;
12 //二阶子节点集合
13 var grandChilds=document.getElementsByName("cb"+child.id);
14
15 if(grandChilds.length>0)
16 {
17 //该子节点仍有子节点,此子节点继续递归
18 alert(child.id+" Looping:"+grandChilds.length);
19 var cid=child.id;
20 new setChilds(cid,state);
21 }
22 }
23 }
2 {
3 //通过当前节点获得他所有子节点
4 var childs=document.getElementsByName("cb"+id);
5 //遍历该节点所有子节点
6 var index=0;
7 for(index=0;index<childs.length;index++)
8 {
9 //设置此子节点状态
10 var child=childs[index];
11 child.checked=state;
12 //二阶子节点集合
13 var grandChilds=document.getElementsByName("cb"+child.id);
14
15 if(grandChilds.length>0)
16 {
17 //该子节点仍有子节点,此子节点继续递归
18 alert(child.id+" Looping:"+grandChilds.length);
19 var cid=child.id;
20 new setChilds(cid,state);
21 }
22 }
23 }
就是注意这段代码中的index
如果没有第6行的 初始化变量index
死也出不来效果。
另外,发现一个问题,Javascript中的函数中 写 return和不写return好像是不同的。今后要弄清楚它们的区别。