记得这个错误在之前研习Ajax时出现过,其实也相当注意了。就是在某函数FuncA体内声明某局部变量v,单独使用当然无事,但如果在声明v之后,在FuncA内又调用其他函数FuncB,且FuncB体内刚好有同名变量v被直接赋值,而未初始化过,问题就来了。这样会导致在FuncB内的v使用的是FuncA定义的那个v,当然对它的所有操作的效果,在结束函数FuncB后,体现在FuncA的变量v上面。事情就是这样。以后注意就是。
今天的具体问题:一个递归算法,本来使用C#没事,就是走Javascript这条路,这个小问题,搞了我一晚上。惭愧!
就是注意这段代码中的index
如果没有第6行的 初始化变量index
死也出不来效果。
另外,发现一个问题,Javascript中的函数中 写 return和不写return好像是不同的。今后要弄清楚它们的区别。
今天的具体问题:一个递归算法,本来使用C#没事,就是走Javascript这条路,这个小问题,搞了我一晚上。惭愧!
1
function 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
}
function 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
}就是注意这段代码中的index
如果没有第6行的 初始化变量index
死也出不来效果。
另外,发现一个问题,Javascript中的函数中 写 return和不写return好像是不同的。今后要弄清楚它们的区别。


浙公网安备 33010602011771号