怎么样只获取 <ul id="nav"> 里的<li>数量<script type='text/javascript'>
var $=function(node){
return document.getElementsById(node);
}
var $$=function(node){
return document.getElementsByTagName(node);
}
var $$$=function(node){
return document.getElementsByName(node);
}
function a()
{ alert($$$("abc").length); }
function b()
{ alert($$("li").length); }
function c()
{ alert($("li").length); }
</script>
<button onclick='a()'>getElementsByName</button> <button onclick='b()'>getElementsByTagName</button><button onclick='c()'>getElementsById</button>
 <input type="text" id="byid" name='abc'>
 <input type="radio" name='abc'>
 <input type="radio" name='abc'>
 <input type="radio" name='abc'><li id="byid" name='abc'>asdfsaf</li>
<li id="byid">asdfsaf</li>
<li id="a">asdfsaf</li>
<li id="a">asdfsaf</li><ul id="nav">
<li>ssss</li>
<li>aaaaa</li>
</ul>
list2:
<ul id="nav2">
<li>sssss</li>
<li>aaaaa</li>
</ul>

解决方案 »

  1.   

    alert($("li").getElementsByTagName("li").length)
      

  2.   


    var $=function(node){
                return document.getElementsById(node);
            }
            var $$=function(node,p){
                return (p ||document).getElementsByTagName(node);
            }
            
            alert($$("li",$("nav")).length);//或者
    var $=function(node){
                return typeof(node)=="string"?document.getElementsById(node):node;
            }
            var $$=function(node,p){
                return ($(p) ||document).getElementsByTagName(node);
            }
            
            alert($$("li","nav").length);
      

  3.   

    jQueryalert($("ul#nav li").size());
      

  4.   

    var $=function(node){
                return document.getElementsById(node);
            }
    里面的那个s是不是应该去掉。
    应该是:document.getElementById(node);吧。
      

  5.   

    试这个看看...function selectNodesByContainer(ContainerID,TagName){
    var cid=ContainerID;
    var tn=TagName;
    if(cid=="" || tn=="") return;
    var obj=document.getElementById(ContainerID);
    var v="";
    oList=obj.getElementsByTagName(tn);
    for(var i=0;i<oList.length;i++){
        v+=oList[i].innerHTML+"|";
        }
    alert("指定ID号="+ ContainerID +" 的 "+obj.tagName+" 对象中 "+tn+" 各个元素的值为:\n"+v);
    }
    function selectNodesByContainer(ContainerID,TagName){
    var cid=ContainerID;
    var tn=TagName;
    if(cid=="" || tn=="") return;
    var obj=document.getElementById(ContainerID);
    var v="";
    oList=obj.getElementsByTagName(tn);
    for(var i=0;i<oList.length;i++){
        v+=oList[i].innerHTML+"|";
        }
    alert("指定ID号="+ ContainerID +" 的 "+obj.tagName+" 对象中 "+tn+" 各个元素的值为:\n"+v);
    }
    调用:
    <input name="btn" type="button" value="TEST" onClick="javascript:selectNodesByContainer('nav','li');">
      

  6.   

    函数重复了一次了,去掉一个 selectNodesByContainer(ContainerID,TagName)
      

  7.   

    还是不明白怎么搞,这是个搜索建议的代码,如果我有很多<li>就没办法用键盘的上下键获取数据.
     
    var j=-1;
    var temp_str;
    var $=function(node){
    return document.getElementById(node);
    }
    var $$=function(node){
    return document.getElementsByTagName(node);
    }
    function ajax_keyword(){
    var xmlhttp;
    try{
    xmlhttp=new XMLHttpRequest();
    }
    catch(e){
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function(){
    if (xmlhttp.readyState==4){
    if (xmlhttp.status==200){
    var data=xmlhttp.responseText;
    $("suggest").innerHTML=data;
    j=-1;
    }
    }
    }
    xmlhttp.open("post", "search/", true);
    xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');
    xmlhttp.send("keyword="+escape($("keyword").value));
    }
    function keyupdeal(e){
    var keyc;
    if(window.event){
    keyc=e.keyCode;
    }
    else if(e.which){
    keyc=e.which;
    }
    if(keyc!=40 && keyc!=38){
    ajax_keyword();
    temp_str=$("keyword").value;
    }
    } function set_style(num){
    for(var i=0;i<$$("li").length;i++){
    var li_node=$$("li")[i];
    li_node.className="";
    }
    if(j>=0 && j<$$("li").length){
    var i_node=$$("li")[j];
    $$("li")[j].className="select";
    }
    }
    function mo(nodevalue){
    j=nodevalue;
    set_style(j);

    }
    function form_submit(){
    if(j>=0 && j<$$("li").length){
    $$("input")[0].value=$$("li")[j].childNodes[0].nodeValue;
    }
    document.search.submit();
    }
    function hide_suggest(){
    var nodes=document.body.childNodes
    for(var i=0;i<nodes.length;i++){
    if(nodes[i]!=$("keyword")){
    $("suggest").innerHTML="";
    }
    }
    }

    function keydowndeal(e){
    var keyc;
     
    if(window.event){
    keyc=e.keyCode;
    }
    else if(e.which){
    keyc=e.which;
    }
    if(keyc==40 || keyc==38){
    if(keyc==40){
    if(j<$$("li").length){
    j++;
    //alert($$("li").length);
    if(j>=$$("li").length){
    j=-1;
    }
    }
    if(j>=$$("li").length){
    j=-1;
    }
    }
    if(keyc==38){
    if(j>=0){
    j--;
    if(j<=-1){
    j=$$("li").length;
    }
    }
    else{
    j=$$("li").length-1;
    }
    }
    set_style(j);
    if(j>=0 && j<$$("li").length){
    $("keyword").value=$$("li")[j].childNodes[0].nodeValue;
    }
    else{
    $("keyword").value=temp_str;
    }
    }
    }

    function input(str){
        document.getElementById("keyword").value=str;//从提示层选择你需要的数据填充到文本框
        document.getElementById("suggest").innerHTML = "";//清空提示层
        //document.getElementById("suggest").style.display = "none";//设置提示层不可见
    }
      

  8.   

    1、获取<ul id="nav"> 里的 所有<li>数量,包括<li>元素中的<ul><li /></ul>document.getElementById("nav").getElementsByTagName("li").length2、只获取<ul id="nav"> 里第一层 <li>数量 liCount就是要求的值var allChild = document.getElementById("nav").childNodes;
    var liCount = 0;
    for(var i=0;i<allChild.length;i++){
      if(allChild[i].nodeType == 1 && allChild[i].nodeName == "li"){
        liCount++;
      }
    }
      

  9.   

    只有在下面这种情况(也就是li里面嵌套了li)才需要分两种情况,你现在这种结构只要分第一种方法就行了。<ul id="nav">
    <li>ssss</li>
    <li>aaaaa</li>
    <li>
      <ul>
        <li>...</li>
      </ul>
    </li>
    </ul>
      

  10.   


    jquery应该用$("#nav li").size()效率更高。