怎么获取部分
  • .length (getElementsByTagName?getElementsByName?getElementsById?)
  • mejoywind 2009-12-17 03:24:57
    怎么样只获取 <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>

    ...全文
    295 10 打赏 收藏 转发到动态 举报
    写回复
    用AI写文章
    10 条回复
    切换为时间正序
    请发表友善的回复…
    发表回复
    Inpool 2009-12-20
    • 打赏
    • 举报
    回复
    [Quote=引用 3 楼 mrshelly 的回复:]
    jQuery

    alert($("ul#nav li").size());
    [/Quote]

    jquery应该用$("#nav li").size()效率更高。
    Inpool 2009-12-18
    • 打赏
    • 举报
    回复
    只有在下面这种情况(也就是li里面嵌套了li)才需要分两种情况,你现在这种结构只要分第一种方法就行了。

    <ul id="nav">
    <li>ssss</li>
    <li>aaaaa</li>
    <li>
    <ul>
    <li>...</li>
    </ul>
    </li>
    </ul>
    Inpool 2009-12-18
    • 打赏
    • 举报
    回复
    1、获取<ul id="nav"> 里的 所有<li>数量,包括<li>元素中的<ul><li /></ul>

    document.getElementById("nav").getElementsByTagName("li").length

    2、只获取<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++;
    }
    }
    mejoywind 2009-12-18
    • 打赏
    • 举报
    回复
    还是不明白怎么搞,这是个搜索建议的代码,如果我有很多<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";//设置提示层不可见
    }

    shenzhenNBA 2009-12-17
    • 打赏
    • 举报
    回复
    函数重复了一次了,去掉一个 selectNodesByContainer(ContainerID,TagName)
    shenzhenNBA 2009-12-17
    • 打赏
    • 举报
    回复
    试这个看看...

    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');">
    licip 2009-12-17
    • 打赏
    • 举报
    回复
    var $=function(node){
    return document.getElementsById(node);
    }
    里面的那个s是不是应该去掉。
    应该是:document.getElementById(node);吧。
    mrshelly 2009-12-17
    • 打赏
    • 举报
    回复
    jQuery

    alert($("ul#nav li").size());
    sohighthesky 2009-12-17
    • 打赏
    • 举报
    回复

    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);
    cntmi 2009-12-17
    • 打赏
    • 举报
    回复
    alert($("li").getElementsByTagName("li").length)

    87,910

    社区成员

    发帖
    与我相关
    我的任务
    社区描述
    Web 开发 JavaScript
    社区管理员
    • JavaScript
    • 无·法
    加入社区
    • 近7日
    • 近30日
    • 至今
    社区公告
    暂无公告

    试试用AI创作助手写篇文章吧