getElementsByTagName的问题

<!DOCTYPE html>
<html>
<head lang="en">

<meta charset="UTF-8">
<title>实践题 - 选项卡</title>
<style type="text/css">
    *{padding:0px;margin: 0px;font:12px normal "microsoft yahei";}
    #tabs {width:290px;padding:5px;height:150px;margin:20px;}
    #tabs ul{list-style:none;display: block;height:30px;line-height:30px;border-bottom:2px saddlebrown solid;}
    #tabs ul li{background:#fff;cursor:pointer;float:left;list-style:none;height:28px;line-height:28px;margin:0px 3px;border:1px solid #aaaaaa;border-bottom:none;display:inline-block;width:60px;text-align: center;}
    #tabs ul li.on{border-top:2px solid saddlebrown;border-bottom: 2px solid #fff;}
    #tabs div{height:120px;line-height: 25px;border:1px solid #336699;border-top:none;padding:5px;}
    .hide{display: none;}
</style>
<script type="text/javascript">
     window.onload = function(){
         var oTab = document.getElementById("tabs");
         var oUl = oTab.getElementsByTagName("ul")[0];
         var oLis = oUl.getElementsByTagName("li");
         var oDivs= oTab.getElementsByTagName("div");

         for(var i= 0,len = oLis.length;i<len;i++){
             oLis[i].index = i;
             oLis[i].onclick = function() {
                 for(var n= 0;n<len;n++){
                     oLis[n].className = "";
                     oDivs[n].className = "hide";
                 }
                 this.className = "on";
                 oDivs[this.index].className = "";
             }
         };
     }
</script>

</head>
<body>
<div id="tabs">

<ul>
    <li class="on">房产</li>
    <li>家居</li>
    <li>二手房</li>
</ul>
<div>
    275万购昌平邻铁三居 总价20万买一居<br>
    200万内购五环三居 140万安家东三环<br>
    北京首现零首付楼盘 53万购东5环50平<br>
    京楼盘直降5000 中信府 公园楼王现房<br>
</div>
<div class="hide">
    40平出租屋大改造 美少女的混搭小窝<br>
    经典清新简欧爱家 90平老房焕发新生<br>
    新中式的酷色温情 66平撞色活泼家居<br>
    瓷砖就像选好老婆 卫生间烟道的设计<br>

</div>
<div class="hide">
    通州豪华3居260万 二环稀缺2居250w甩<br>
    西3环通透2居290万 130万2居限量抢购<br>
    黄城根小学学区仅260万 121平70万抛!<br>
    独家别墅280万 苏州桥2居优惠价248万<br>

</div>

</div>

</body>
</html>

代码如上
53bd0e9e000163d203390200.jpg

         var oTab = document.getElementById("tabs");
         var oUl = oTab.getElementsByTagName("ul")[0];
         var oLis = oUl.getElementsByTagName("li");
         var oDivs= oTab.getElementsByTagName("div");
         

为什么不能直接
var oUl = getElementsByTagName("ul")[0];
var oLis = getElementsByTagName("li");
这样写?还有[0]是什么意思?ul标签不是只有一个吗?新手刚学还望解答!

阅读 2.5k
2 个回答

大兄弟,getElementsByTagName("ul")这里返回的是一个数组,不信你可以打印出来看看,凡是你看到getElementsByXXXXXX中间的那个s,一律返回的都是数组,不管你有几个这样的元素,即使有一个,返回的也是一个长度为1的数组,所以必须要跟一个[0]来取到具体对应的那个元素。

 var oTab = document.getElementById("tabs");
 var oUl = oTab.getElementsByTagName("ul")[0]; //这里用oTab而不是document,是因为oTab的范围比较小,避免页面中还有其它的ul。

//为什么要加[0] ?因为 ....ByTagName()返回的是数组,即使数组的元素只有一个。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题