需求:想遍历某个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,此长度不变 不知为何
构造类似
<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,此长度不变 不知为何
<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>
实际上<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的方法明天去试一试
谢谢
<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>
$("#a").children("div").each(function(){
alert($(this).text())
});
一个页面里所有的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>
没用jquery 封装度太高 不了解 所以直接用js自己写 参考了shenzhenNBA 3ks!