我找了好久都找不出执行不了的原因...

来源:10-1 编程挑战

切兔子

2016-01-11 20:15

我知道肯定有问题,但是找了半天也找不到原因....求大神orz

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>实践题 - 选项卡</title>
    <style type="text/css">
     /* CSS样式制作 */  
    *{padding:0px;margin:0px;font-size:15px;}
    #tabs{width:350px;height:200px;}
    #tabs ul{list-style:none;height:30px;line-height:30px;display:block;border-bottom:2px black solid;}
    #tabs ul li{float:left;margin:0 5px;line-height:28px;height:28px;width:50px;border:1px solid grey;border-bottom:none;background:#fff;display:inline-block;cursor:pointer;text-align:center;}
    #tabs ul .on{border-top:2px saddlebrown solid;border-bottom:2px #fff solid;}
    #tabs div{height:150px;border:1px blue solid;border-top:none;padding:10px;}
    .hide{display:none;}
    </style>
    <script type="text/javascript">
         
    // JS实现选项卡切换
    window.onload=function(){
        var otab=document.getElementById("tabs");
        var oul=otab.getElementsByTagName("ul");
        var oli=oul.getElementsByTagName("li");
        var odiv=otab.getElementsByTagName("div");
        
            for(var i=0,len=oli.length;i<len;i++){
                oli[i].index=i;
                oli[i].onclick=function(){
                    for(var n=0;n<len;n++){
                        oli[n].className="";
                        odiv[n].className="hide";
                    }
                this.className="on";
                odiv[this.index].className="";
                }
            }
    }
    
    </script>
 
</head>
<body>
<!-- HTML页面布局 -->
<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>


写回答 关注

3回答

  • Perona
    2016-01-11 21:09:50
    var oul=otab.getElementsByTagName("ul");

    这里缺了下标,加上下标为[0]即可。

    为什么呢?getElementsByTagName() 方法可返回带有指定标签名的对象的集合。

    那么我们要准确找到ul元素,应该通过这个集合的下标去获取。所以改成下面这样即可

    var oul=otab.getElementsByTagName("ul")[0];


    慕无忌702... 回复really...

    var otab=document.getElementById("tabs");获取的是ID里面的所有 var oul=otab.getElementsByTagName("ul");这里取得是对象的集合 所以要加 var oli=oul.getElementsByTagName("li");如果上一步没加0 写成oul【0】.get.....这个样也行 var odiv=otab.getElementsByTagName("div"); 这里在输出odiv的时候是要加,otab后面不加,这是因为otaba是TD里面的所有 不是对象的集合。

    2016-01-28 19:07:21

    共 2 条回复 >

  • 慕移动7500465
    2016-01-11 21:02:02

     把这句 var oli=oul.getElementsByTagName("li"); 中的oul换成document对象就没有问题了。看了调试信息,说没有这个函数,我也不知道什么原因,等待楼下大神解答。

  • 切兔子
    2016-01-11 20:18:10

    为什么我复制粘贴过来div 的class属性都变没了...

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468061 学习 · 21891 问题

查看课程

相似问题