怎么获取部分
  • .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>

...全文
307 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,994

社区成员

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

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