• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Whokay 必ず勝つ!頑張ろう!
博客园    首页    新随笔    联系   管理    订阅  订阅
又现Javascript同名变量引用混乱
          记得这个错误在之前研习Ajax时出现过,其实也相当注意了。就是在某函数FuncA体内声明某局部变量v,单独使用当然无事,但如果在声明v之后,在FuncA内又调用其他函数FuncB,且FuncB体内刚好有同名变量v被直接赋值,而未初始化过,问题就来了。这样会导致在FuncB内的v使用的是FuncA定义的那个v,当然对它的所有操作的效果,在结束函数FuncB后,体现在FuncA的变量v上面。事情就是这样。以后注意就是。
         今天的具体问题:一个递归算法,本来使用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    }

就是注意这段代码中的index
如果没有第6行的 初始化变量index
死也出不来效果。

另外,发现一个问题,Javascript中的函数中 写 return和不写return好像是不同的。今后要弄清楚它们的区别。
posted on 2007-07-18 00:20  Vince  阅读(578)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3