需求:想遍历某个div下的所有div,让id为指定值的div显示(或者其他指定方法亦可),其余的隐藏。
构造类似
<div id="a" name="a">    <div id="b1"> 111111 </div>
    <div id="b2"> 111111 </div>
    <div id="b3"> 111111 </div></div>
我试了下:
var a = document.getElementById("a");
a.childNodes.length的值始终为一定值,动态增加div id="b4" 等div,此长度不变  不知为何

解决方案 »

  1.   

    div有命名规律的话直接getElementById啊,参数是个字符串遍历拼接下就可以了
      

  2.   

    var a = document.getElementsByName("a");
      

  3.   

    局部选择问题,参考...
    <html>
    <head><title>TEST</title></head>
    <style type="text/css">
    *{font-family:verdana; font-size:12px;}
    </style>
    <script language="javascript">
    function getValue(containerID,TagName)
    {
    var o=document.getElementById(containerID);
    var tn=TagName;
    var TagList=o.getElementsByTagName(tn);
    var rv="";
    for(var i=0;i<TagList.length;i++)
    {
    rv+=TagList[i].childNodes[0].nodeValue + "\n";
           //其它自己的操作...
    }
    alert("ID = "+containerID+" 的对象 "+o.tagName+"里面所有的: "+tn+" 子节点的值\n"+rv);
    }
    </script>
    <body>
    aa<div id="aa" name="aa">
      <div id="aab1"> aa111111 </div>
      <div id="aab2"> aa111111 </div>
      <div id="aab3"> aa111111 </div>
    </div>
    <br>
    bb<div id="bb" name="bb">
      <div id="bbb1"> bb111111 </div>
      <div id="bbb2"> bb111111 </div>
      <div id="bbb3"> bb111111 </div>
    </div>
    <br>
    cc<div id="cc" name="cc">
      <div id="ccb1"> cc111111 </div>
      <div id="ccb2"> cc111111 </div>
      <div id="ccb3"> cc111111 </div>
    </div><br>
    <b>局部选择子接点的值</b><br>
    <a href="#:;" onClick="javascript:getValue('bb','div')">TEST GET BB SUB NODE VALUE</a>
    </body>
    </html>
      

  4.   

    噢  表达可能有些问题
    实际上<div id="b1"> 111111 </div>这些子div中的id也有可能是重复的。
    比如
    <div id="a" name="a">  <div id="b1"> 111111 </div>
      <div id="b2"> 222222 </div>
      <div id="b3"> 333333 </div>
      <div id="b3"> 444444 </div>
      <div id="b1"> 555555 </div></div>
    /*********************/
    点下按钮,把参数(比如b1)传进去,页面则显示111111和555555。
    所以我希望可以遍历div,判断id为b1的就显示出来,而那些在<div id="a" name="a">以内的、id非b1的则不显示。
    也有全部显示出来的时候。
    不过,上述的<div id="b1"> </div>是可以自己写的,我暂且写成了只有一个id的形式。如果仅仅写一个id不够好,需要写成别的样式(比如<div id="b1" name="xxx" xxx="xxx">)比较好处理的话,也是可以改的。
    对js不熟,很痛苦4L的方法明天去试一试 
     
    谢谢 
      

  5.   

    上网查了查  用4L的办法    TagList[i].id应该就可以取到id的值了,明天试一试
      

  6.   

    <div id="a" name="a">
      <div id="b1"> 111111 </div>
      <div id="b2"> 222222 </div>
      <div id="b3"> 333333 </div>
      <div id="b3"> 444444 </div>
      <div id="b1"> 555555 </div>
    </div>
    show id:<input type=text id=txtId><input type=button value="show" onclick="showDiv();">
    <script type="text/javascript">
    var div=document.getElementById("a");
    window.onload=function(){
        hideDiv();
    }
    function hideDiv(){
        for(var i=0;i<div.childNodes.length;i++)
            div.childNodes[i].style.display="none";
    }
    function showDiv(){
        hideDiv();
        var id=document.getElementById("txtId").value;
        for(var i=0;i<div.childNodes.length;i++)
            if(div.childNodes[i].getAttribute("id")==id){
                div.childNodes[i].style.display="block";}
    };
    </script>
      

  7.   

    jquery$("#a").children("div").length;
    $("#a").children("div").each(function(){
         alert($(this).text())
    });
      

  8.   


    一个页面里所有的ID最好是唯一  按你的修改如下:<html>
    <head><title>TEST</title></head>
    <style type="text/css">
    *{font-family:verdana; font-size:12px;}
    </style>
    <script language="javascript">
    function getValue(containerID,TagName,showObjID)
    {
    var o=document.getElementById(containerID);
    var tn=TagName;
    var TagList=o.getElementsByTagName(tn);
    var hideID=showObjID.replace(/^\s*|\s*$/,"");
    var rv="";
    for(var i=0;i<TagList.length;i++)
    {
    rv+="ID = "+TagList[i].id+" 值:"+TagList[i].childNodes[0].nodeValue + "\n";
    if(TagList[i].id==showObjID)
    TagList[i].style.display="block";
    else
    TagList[i].style.display="none";
    }
    alert("ID = "+containerID+" 的对象 "+o.tagName+"里面所有的: "+tn+" 子节点的值\n"+rv+"\n显示的项ID= "+hideID);
    }
    </script>
    <body>
    aa<div id="aa" name="aa">
      <div id="aab1"> aa111111 </div>
      <div id="aab2"> aa111112 </div>
      <div id="aab3"> aa111113 </div>
    </div>
    <br>
    bb<div id="bb" name="bb">
      <div id="bbb1"> bb111111 </div>
      <div id="bbb2"> bb111112 </div>
      <div id="bbb3"> bb111113 </div>
      <div id="bbb1"> bb111114 </div>
    </div>
    <br>
    cc<div id="cc" name="cc">
      <div id="ccb1"> cc111111 </div>
      <div id="ccb2"> cc111112 </div>
      <div id="ccb3"> cc111113 </div>
    </div><br>
    <b>局部选择子接点的值</b><br>
    <a href="#:;" onClick="javascript:getValue('bb','div','bbb1')">TEST GET BB SUB NODE VALUE</a>
    </body>
    </html>
      

  9.   

    va divs = document.getElementById("a").getElementsByTagName("div");
      

  10.   

    谢谢各位  
    没用jquery   封装度太高 不了解 所以直接用js自己写 参考了shenzhenNBA 3ks!