怎么获取每个ul最外围的ul啊.不获取里面的ul
有时候做多级菜单的时候,第一级用dl,dt,dd,第二级用ul,li,第三级用div,p
用document.getElementById("wrap").getElementsByTagName("ul")老是把全部获取到了

例如:
<div id="wrap">
<ul>
    <li>
          <a href=""></a>
          <ul>
             <li><a href=""></a></li>
             <li><a href=""></a></li>
          </ul>
    </li>
</ul>
<ul>
    <li>
          <a href=""></a>
          <ul>
             <li><a href=""></a></li>
             <li><a href=""></a></li>
          </ul>
    </li>
</ul>
<ul>
    <li>
          <a href=""></a>
          <ul>
             <li><a href=""></a></li>
             <li><a href=""></a></li>
          </ul>
    </li>
</ul>
</div>

解决方案 »

  1.   

    document.getElementById("wrap").childNodes然后
    遍历选择就好
      

  2.   


    "怎么获取每个ul最外围的ul啊.不获取里面的ul"----不知道又没理解错你的意思,这几天刚好在学DOM.
    为了更好理解取到是那个UL,我为UL都加了Lang属性,如代码:
    <div id="wrap">
    <ul lang="1_ul_01">
      <li>
      <a href="">li0</a>
      <ul lang="2_ul_01">
      <li><a href="">li1</a></li>
      <li><a href="">li2</a></li>
      </ul>
      </li>
    </ul>
    <ul lang="1_ul_02">
      <li>
      <a href="">li4</a>
      <ul lang="2_ul_02">
      <li><a href="">li5</a></li>
      <li><a href="">li6</a></li>
      </ul>
      </li>
    </ul>
    <ul lang="1_ul_03">
      <li>
      <a href="">li7</a>
      <ul lang="2_ul_03">
      <li><a href=""></a>li8</li>
      <li><a href=""></a>li9</li>
      </ul>
      </li>
    </ul>
    </div>
      <input type="submit" name="Submit" value="URL" onclick="getUl()"/>
    配套的JS为:
    function getUl(){
    var getId=document.getElementById('wrap');
    var i='';
    var get_1st_UlList='';
    var getUl=getId.childNodes;
    if(getId.hasChildNodes()){
    for(i=0;i<getUl.length;i++){
    get_1st_UlList=get_1st_UlList+getUl[i].getAttribute('lang')+"\n";
    }
    alert(get_1st_UlList.toLowerCase());
      }
    }
    如果还有取里面的UL,我就要再研究一下哈~
      

  3.   

    哥们这样的东西不用Jquery不是受罪吗?
    用JS肯定是能实现,但肯定需要进行遍历,难道头部加个Jquery会很影响页面加载速度?像这个需求document.getElementById("wrap").getElementsByTagName("ul")//老是把全部获取到了
    Jquery:$("#wrap > ul") 这样只会取到div底下的ul,不会取到ul里面ul
    要取全部的就是Jquery:$("#wrap ul") or $("#wrap").find("ul")Jquery的选择器是仿XPATH设计的 只要给一个起点,绝对能找到你想找的。
      

  4.   


    JQuery的选择符已为你考虑周全了,很方便
      

  5.   

    遍历得到ul之后
    然后在getElementsByTagName("ul")呗
      

  6.   

    你是说这样吗?
    document.getElementById("wrap").childNodes.getElementsByTagName("ul");
      

  7.   

    不是的
    var ul = document.getElementById("wrap").childNodes
    var len = ul.length;
    for(var i = 0; i < len; i++) {
       if(ul[i].tagName.toLowerCase() == "ul") {
          var ulchildren = ul[i].document.getElementsByTagName("ul");
       }
    }
      

  8.   

    用jquery吧手写也行
    封装一个选择子元素
    选择后代元素的方法
      

  9.   

    jquery 是最好实现的了,还是用jq吧。
    它有一个很强大的查找函数,而且很方便调用 
    如:<p>Hello</p><div><span>Hello Again</span></div><p>And Again</p>
    $("div").children()则得到的是<span>Hello Again</span>
    同样还有其他的方法如。parent ,find ,next,prev等。