JavaScript进阶篇-编程挑战

编程挑战

现在利用之前我们学过的JavaScript知识,实现选项卡切换的效果。

效果图:

文字素材:

房产:

    275万购昌平邻铁三居 总价20万买一居
    200万内购五环三居 140万安家东三环
    北京首现零首付楼盘 53万购东5环50平
    京楼盘直降5000 中信府 公园楼王现房

家居:

     40平出租屋大改造 美少女的混搭小窝
     经典清新简欧爱家 90平老房焕发新生
     新中式的酷色温情 66平撞色活泼家居
     瓷砖就像选好老婆 卫生间烟道的设计

二手房:

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

任务

大家先思考和分析实现思路,然后在动手实现

一、HTML页面布局

提示:
选项卡标题使用ul..li
选项卡内容使用div

二、CSS样式制作

提示:
整个选项卡的样式设置
选项卡标题的样式设置
选项卡内容的样式设置
一开始只显示一个选项卡内容,其它选项卡内容隐藏。

三、JS实现选项卡切换

提示:
获取选项卡标题和选项卡内容
选项卡内容多个,需要循环遍历来操作,得知哪个选项卡和哪个选项内容匹配
通过改变DOM的css类名称,当前点击的选项卡显示,其它隐藏。
 
   
<!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 Tab = document.getElementById("tabs");
              var Ul  = Tab.getElementsByTagName("ul")[0];
              var Lis = Ul.getElementsByTagName("li");
              var Divs = Tab.getElementsByTagName("div");
 
              for(var i= 0,len = Lis.length;i<len;i++){
                  Lis[i].index = i;
                  Lis[i].onclick = function() {
                      for(var n= 0;n<len;n++){
                          Lis[n].className = "";
                          Divs[n].className = "hide";
                      }
                      this.className = "on";
                      Divs[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>

思路:

    
    
  for ( var  i=0,len=oLis.length;i<len;i++){ //通过循环为所有的LI绑定点击事件
             oLis[i].index=i; //添加index属性,方便后期找到当前点击LI对应的DIV,为其去除hide样式,即将其className赋值为空
             oLis[i].onclick= function (){ //循换绑定点击事件
                 for ( var  n=0;n<len;n++){ //通过循环将所有的li的className赋值为空,即所有的LI皆是未点击的样式,所有的DIV的className为hide样式,即所有DIV都隐藏
                     oLis[n].className= "" ;
                     oDivs[n].className= "hide" ;
                 }
             this .className= "on" ;    //通过this获取到当前点击的LI,将其className赋值为on,即让当前点击的LI显示其应有的点击样式
            oDivs[ this .index].className= "" //通过循环体内第一条语句存储的index值,找到当前点击LI对应的DIV,去除原有的hide样式,让其显示
             }
         };
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

任性的我

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值