function treeClick(o){
  var obj = event.srcElement;
  if (obj==o) return;  
  if (!obj.nextSibling) return;
  var disp = obj.nextSibling.style.display!="none"?"none":"block";
  var level = parseInt(obj.className.substring(1));
  while(obj.nextSibling&&parseInt(obj.nextSibling.className.substring(1))>level){
obj = obj.nextSibling;
obj.style.display = disp;
  }
}
这个菜单导航一点击一级,二三级全点开了。是哪里问题啊?

解决方案 »

  1.   

    这个问题太难回答了,你贴的太少了吧.  DOM结构都不知道
      

  2.   

    function ready(){
        $("div[class='l1']").show();
        $("div[class='l2']").show();
        $("div[class='l3']").hide();
        $("div[class='l4']").hide();}这是定义的菜单导航级显示,分为一、二、三、四这四个。一级和二级显示,三四级开始就隐藏,点击后显示,但是我点击二级,三级和四级都显示了。<div id="tree" style="width:188px;height:450px;border:1px outset #EEEEEE;padding-top:2px;overflow-x:hidden;overflow-y:scroll;"
      onmouseover="javascript:var obj=event.srcElement;if(obj!=this)obj.style.backgroundColor='#f3f6ff';"
      onmouseout="javascript:var obj=event.srcElement;if(obj!=this)obj.style.backgroundColor='';"
      onclick="javascript:treeClick(this)">
      <div class="l1">全国体验店</div>
      <div class="l2">广东省</div>
      <div class="l3">广州市</div>
      <div class="l4"><a href="shop.html">广州维多利店</a></div>
      <div class="l4"><a href="shop-1.html">广州五洲城店</a></div>
    这是页面的代码
      

  3.   

    jquery不是有现成的api么, 为什么要自己写这么纳闷
      

  4.   

    这个你可以看api文档啊, 
    说回你这个:
    你看看你这句是什么意思,
    while(obj.nextSibling&&parseInt(obj.nextSibling.className.substring(1))>level){
    obj = obj.nextSibling;
    obj.style.display = disp;
      }你这句的意思分明就是将后面的节点中className中数字所有大于该节点的都显示出来算法出错, 换个算法就好了..