• 简单选项卡切换(二)


    通过设置定时器实现延时0.5s切换,一个重要的技巧是定义了一个that变量来存放当前指针this,

    之所以不能在这直接引用this是因为setTimeout是window对象,用this的话会指向定时器,所以要在前面定义一个变量
    还要注意调用定时器前要判断是否存在准备执行的定时器。

    效果如图:

     1 <!DOCTYPE html>
     2 <html>
     3 <head lang="en">
     4     <meta charset="UTF-8">
     5     <title>延时切换</title>
     6     <style type="text/css">
     7         *{margin: 0;padding: 0;font: normal 12px "微软雅黑";color: #000000;}
     8         ul{list-style-type: none;}
     9         a{text-decoration: none;}
    10         #tab-list{width: 275px;height: 190px;margin: 20px auto;}
    11         #ul1{border-bottom: 2px solid #8B4513;height: 32px;}
    12         #ul1 li{display: inline-block;width: 60px;line-height: 30px;text-align: center;
    13             border: 1px solid #999;border-bottom: none;margin-left: 5px;}
    14         #ul1 li:hover{cursor: pointer;}
    15         #ul1 li.active{border-top: 2px solid #8B4513;border-bottom: solid 2px #ffffff;}
    16         #tab-list div{border: 1px solid #7396B8;border-top: none;}
    17         #tab-list div li{height: 30px;line-height: 30px;text-indent: 8px;}
    18         .show{display: block;}.hide{display: none;}
    19     </style>
    20     <script type="text/javascript">
    21         window.onload=function(){
    22             var ul1=document.getElementById('ul1');
    23             var aLi=ul1.getElementsByTagName('li');
    24             var oDiv=document.getElementById('tab-list');
    25             var aDiv=oDiv.getElementsByTagName('div');
    26             var timer=null;
    27             for(var i=0;i<=aLi.length;i++){
    28                 aLi[i].id=i;
    29                 aLi[i].onmouseover=function(){
    30                     var that=this;//用that这个变量来引用当前滑过的li
    31                     //如果存在准备执行的定时器,立即清除,只能当前停留时间大于500ms时才开始执行(指鼠标快速滑过一个的那一瞬间要清除掉产生的定时器)
    32                     if(timer){
    33                         clearTimeout(timer);
    34                         timer=null;
    35                     }
    36                     //延时半秒执行
    37                     timer=window.setTimeout(function(){
    38                         for(var i=0;i<aLi.length;i++){
    39                             aLi[i].className="";
    40                             aDiv[i].className="hide";
    41                         }
    42                         that.className="active";//之所以不能在这直接引用this是因为setTimeout是window对象,用this的话会指向定时器,所以要在前面定义一个变量
    43                         aDiv[that.id].className="show";
    44                     },500);
    45                 }
    46             }
    47         }
    48     </script>
    49 </head>
    50 <body>
    51 <div id="tab-list">
    52     <ul id="ul1">
    53         <li class="active">房产</li><li>家居</li><li>二手房</li>
    54     </ul>
    55     <div>
    56         <ul>
    57             <li><a href="javascript:;">275万购昌平邻铁三居 总价20万买一居</a></li>
    58             <li><a href="javascript:;">200万内购五环三居 140万安家东三环</a></li>
    59             <li><a href="javascript:;">北京首现零首付楼盘 53万购东5环50平</a></li>
    60             <li><a href="javascript:;">京楼盘直降5000 中信府 公园楼王现房</a></li>
    61         </ul>
    62     </div>
    63     <div class="hide">
    64         <ul>
    65             <li><a href="javascript:;">40平出租屋大改造 美少女的混搭小窝</a></li>
    66             <li><a href="javascript:;">经典清新简欧爱家 90平老房焕发新生</a></li>
    67             <li><a href="javascript:;">新中式的酷色温情 66平撞色活泼家居</a></li>
    68             <li><a href="javascript:;">瓷砖就像选好老婆 卫生间烟道的设计</a></li>
    69         </ul>
    70     </div>
    71     <div class="hide">
    72         <ul>
    73             <li><a href="javascript:;">通州豪华3居260万 二环稀缺2居250w甩</a></li>
    74             <li><a href="javascript:;">西3环通透2居290万 130万2居限量抢购</a></li>
    75             <li><a href="javascript:;">黄城根小学学区仅260万 121平70万抛!</a></li>
    76             <li><a href="javascript:;">独家别墅280万 苏州桥2居优惠价248万</a></li>
    77         </ul>
    78     </div>
    79 </div>
    80 </body>
    81 </html>
  • 相关阅读:
    二叉树重建leetcode
    leetcode 字符串
    leetcode first missing positive,覆盖区间
    leetcode 较难题
    Linq分页
    Linq 数据库通用的操作类
    .Net3.5扩展方法实现对象JSON序列化
    js 判断输入内容(主要针对汉字)的字节长度
    div 内table 居中
    Linq增、删、改、查
  • 原文地址:https://www.cnblogs.com/Lovebugs/p/6371089.html
Copyright © 2020-2023  润新知