• JavaScript进阶


    10-1 编程挑战

    现在利用之前我们学过的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类名称,当前点击的选项卡显示,其它隐藏。

    代码:

      1 <!DOCTYPE html>
      2 
      3 <html>
      4 
      5 <head lang="en">
      6 
      7     <meta charset="UTF-8">
      8 
      9     <title>实践题 - 选项卡</title>
     10 
     11     <style type="text/css">
     12 
     13         *{padding:0px;margin: 0px;font:12px normal "microsoft yahei";}
     14 
     15         #tabs {width:290px;padding:5px;height:150px;margin:20px;}
     16 
     17         #tabs ul{list-style:none;display: block;height:30px;line-height:30px;border-bottom:2px saddlebrown solid;}
     18 
     19         #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;}
     20 
     21         #tabs ul li.on{border-top:2px solid saddlebrown;border-bottom: 2px solid #fff;}
     22 
     23         #tabs div{height:120px;line-height: 25px;border:1px solid #336699;border-top:none;padding:5px;}
     24 
     25         .hide{display: none;}
     26 
     27     </style>
     28 
     29     <script type="text/javascript">
     30 
     31          window.onload = function(){
     32 
     33              var oTab = document.getElementById("tabs");
     34 
     35              var oUl = oTab.getElementsByTagName("ul")[0];
     36 
     37              var oLis = oUl.getElementsByTagName("li");
     38 
     39              var oDivs= oTab.getElementsByTagName("div");
     40 
     41  
     42 
     43              for(var i= 0,len = oLis.length;i<len;i++){
     44 
     45                  oLis[i].index = i;
     46 
     47                  oLis[i].onclick = function() {
     48 
     49                      for(var n= 0;n<len;n++){
     50 
     51                          oLis[n].className = "";
     52 
     53                          oDivs[n].className = "hide";
     54 
     55                      }
     56 
     57                      this.className = "on";
     58 
     59                      oDivs[this.index].className = "";
     60 
     61                  }
     62 
     63              };
     64 
     65          }
     66 
     67     </script>
     68 
     69  
     70 
     71 </head>
     72 
     73 <body>
     74 
     75 <div id="tabs">
     76 
     77     <ul>
     78 
     79         <li class="on">房产</li>
     80 
     81         <li>家居</li>
     82 
     83         <li>二手房</li>
     84 
     85     </ul>
     86 
     87     <div>
     88 
     89         275万购昌平邻铁三居 总价20万买一居<br>
     90 
     91         200万内购五环三居 140万安家东三环<br>
     92 
     93         北京首现零首付楼盘 53万购东5环50平<br>
     94 
     95         京楼盘直降5000 中信府 公园楼王现房<br>
     96 
     97     </div>
     98 
     99     <div class="hide">
    100 
    101         40平出租屋大改造 美少女的混搭小窝<br>
    102 
    103         经典清新简欧爱家 90平老房焕发新生<br>
    104 
    105         新中式的酷色温情 66平撞色活泼家居<br>
    106 
    107         瓷砖就像选好老婆 卫生间烟道的设计<br>
    108 
    109  
    110 
    111     </div>
    112 
    113     <div class="hide">
    114 
    115         通州豪华3居260万 二环稀缺2居250w甩<br>
    116 
    117         西3环通透2居290万 130万2居限量抢购<br>
    118 
    119         黄城根小学学区仅260万 121平70万抛!<br>
    120 
    121         独家别墅280万 苏州桥2居优惠价248万<br>
    122 
    123  
    124 
    125     </div>
    126 
    127 </div>
    128 
    129  
    130 
    131 </body>
    132 
    133 </html>
    实践题 - 选项卡

    要点:

    JS 中“===”与 “==”比较的区别

    1. ==用于一般比较,==在比较的时候可以转换数据类型。
    2. ===用于严格比较,===严格比较,只要类型不匹配就返回flase。
    看一个简单的例子:
     
    给定 x=5
     
    ==  等于             x==8 为 false 
    === 全等(值和类型) x===5 为 true;x==="5" 为 false
     
    举例说明:
     
    "1"  ==  true
     
    类型不同,"=="将先做类型转换,把true转换为1,即为 "1"  ==  1;
     
    此时,类型仍不同,继续进行类型转换,把"1"转换为1,即为 1 == 1;
     
    此时,"==" 左右两边的类型都为数值型,比较成功!
     
    如果比较:"1"  ===  true 左侧为字符型,右侧为bool布尔型,左右两侧类型不同,结果为false;
     
    如果比较:"1" === 1 左侧为字符型,右侧为int数值型,左右两侧类型不同,结果为false;
     
    如果比较:1 === 1 左侧为int数值型,右侧为int数值型,左右两侧类型相同,数值大小也相同,结果为true;
     
    如果比较:1 === 2 左侧为int数值型,右侧为int数值型,左右两侧类型相同,但数值大小不同,结果为false;
     
    简而言之就是 "==" 只要求值相等; "===" 要求值和类型都相等

    ++a与a++的区别

    a++是运算后自增,而++a是先自增在运算(即++a 先自加再取值,a++先取值在自加)

    相同点:

    a++和++a中, i的值自增1,也就是a=a+1;

    不同点:

    a++ : 把(a++)作为一个整体表达式,a 的值虽然自增1,但是整个表达式的值是取 a自增  之前  的值;

    ++a : 也把(++a)作为一个整体表达式,a 的值也自增1,但是整个表达式的值是取 a 自增  之后  的值。

    看实例:

    m=a++ 相当于 m=a,a=a+1

    m=++a 相当于 a=a+1,m=a 这种自加运算和自减运算,都相当于两步骤


    总结: a++ 是先把 a 赋值,然后自己加一, ++a,是先自己加一,然后再把 a 赋值。

    JS中substr和substring的用法和区别

    substr 和 substring都是JS 截取字符串函数,两者用法很相近,下面是两者的语法很示例:

    一、substr 方法

    返回一个从指定位置开始的指定长度的子字符串。
    string.substr(start [, length ])

    注意: length可选项。如 length 为 0 或负数,将返回一个空字符串。如果没有指定该参数,则子字符串到 string 的最后。

    二、substring 方法

    返回位于 String 对象中指定位置的子字符串。
    string.substring(start, end)

    注意:

    substring 方法将返回一个包含从 start 到最后(不包含 end )的子字符串的字符串。

    三、示例代码

    var str = "I love JS!";// 有一个str字符串,如想获取JS子字符串,用两种方法如何实现。
    str.substr(7, 2); // 获取子字符串。

    str.substring(7, 9); // 获取子字符串。

    结果:  JS

    区别:第二参数,substr第二个参数是获取子字符串的长度,substring第二个参数是获取子字符串的结束位置。

    四、注意事项

    substr和substring两个函数截取带有空格的字符串后的长度是每个空格算一个字符长度。例如:

        var a = "I am imooc!";

        a.substring(0, 5).length的值是5,而不是4,但alert(a.substring(0, 5));的值却是I am ,这样在做alert("I am" == a.substring(0, 5));的时候就是false了,alert("I am" == a.substring(0, 4));才是true。

  • 相关阅读:
    【自然框架】 之 资源角色——列表过滤方案(思路篇)
    【自然框架】 之 主从表的添加、修改
    今天你进步了吗?
    【自然框架】通用权限的视频演示(一):添加角色,权限到功能节点和按钮
    【杂谈】您是以什么姿态来参与讨论、回帖的?
    【自然框架】之通用权限:用PowerDesigner重新设计了一下数据库,有ER图和表关系图
    【自然框架】 页面里的父类—— 改进和想法、解释
    页面里的父类——BaseUI源代码下载(2009.10.15更新)
    【自然框架】 页面里的父类——把共用的东东都交给父类,让子类专注于其他。
    【自然框架】之通用权限:数据库设计的几种使用方式
  • 原文地址:https://www.cnblogs.com/daipianpian/p/4557392.html
Copyright © 2020-2023  润新知