完美实现js选项卡切换效果(二)


Posted in Javascript onMarch 08, 2017

本文实例为大家分享了js选项卡切换的具体代码,供大家参考,具体内容如下

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

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

效果如图:

完美实现js选项卡切换效果(二)

具体代码:

<!DOCTYPE html>
<html>
<head lang="en">
 <meta charset="UTF-8">
 <title>延时切换</title>
 <style type="text/css">
  *{margin: 0;padding: 0;font: normal 12px "微软雅黑";color: #000000;}
  ul{list-style-type: none;}
  a{text-decoration: none;}
  #tab-list{width: 275px;height: 190px;margin: 20px auto;}
  #ul1{border-bottom: 2px solid #8B4513;height: 32px;}
  #ul1 li{display: inline-block;width: 60px;line-height: 30px;text-align: center;
   border: 1px solid #999;border-bottom: none;margin-left: 5px;}
  #ul1 li:hover{cursor: pointer;}
  #ul1 li.active{border-top: 2px solid #8B4513;border-bottom: solid 2px #ffffff;}
  #tab-list div{border: 1px solid #7396B8;border-top: none;}
  #tab-list div li{height: 30px;line-height: 30px;text-indent: 8px;}
  .show{display: block;}.hide{display: none;}
 </style>
 <script type="text/javascript">
  window.onload=function(){
   var ul1=document.getElementById('ul1');
   var aLi=ul1.getElementsByTagName('li');
   var oDiv=document.getElementById('tab-list');
   var aDiv=oDiv.getElementsByTagName('div');
   var timer=null;
   for(var i=0;i<=aLi.length;i++){
    aLi[i].id=i;
    aLi[i].onmouseover=function(){
     var that=this;//用that这个变量来引用当前滑过的li
     //如果存在准备执行的定时器,立即清除,只能当前停留时间大于500ms时才开始执行(指鼠标快速滑过一个的那一瞬间要清除掉产生的定时器)
     if(timer){
      clearTimeout(timer);
      timer=null;
     }
     //延时半秒执行
     timer=window.setTimeout(function(){
      for(var i=0;i<aLi.length;i++){
       aLi[i].className="";
       aDiv[i].className="hide";
      }
      that.className="active";//之所以不能在这直接引用this是因为setTimeout是window对象,用this的话会指向定时器,所以要在前面定义一个变量
      aDiv[that.id].className="show";
     },500);
    }
   }
  }
 </script>
</head>
<body>
<div id="tab-list">
 <ul id="ul1">
  <li class="active">房产</li><li>家居</li><li>二手房</li>
 </ul>
 <div>
  <ul>
   <li><a href="javascript:;">275万购昌平邻铁三居 总价20万买一居</a></li>
   <li><a href="javascript:;">200万内购五环三居 140万安家东三环</a></li>
   <li><a href="javascript:;">北京首现零首付楼盘 53万购东5环50平</a></li>
   <li><a href="javascript:;">京楼盘直降5000 中信府 公园楼王现房</a></li>
  </ul>
 </div>
 <div class="hide">
  <ul>
   <li><a href="javascript:;">40平出租屋大改造 美少女的混搭小窝</a></li>
   <li><a href="javascript:;">经典清新简欧爱家 90平老房焕发新生</a></li>
   <li><a href="javascript:;">新中式的酷色温情 66平撞色活泼家居</a></li>
   <li><a href="javascript:;">瓷砖就像选好老婆 卫生间烟道的设计</a></li>
  </ul>
 </div>
 <div class="hide">
  <ul>
   <li><a href="javascript:;">通州豪华3居260万 二环稀缺2居250w甩</a></li>
   <li><a href="javascript:;">西3环通透2居290万 130万2居限量抢购</a></li>
   <li><a href="javascript:;">黄城根小学学区仅260万 121平70万抛!</a></li>
   <li><a href="javascript:;">独家别墅280万 苏州桥2居优惠价248万</a></li>
  </ul>
 </div>
</div>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
DHTML 中的绝对定位
Nov 26 Javascript
JQUERY THICKBOX弹出层插件
Aug 30 Javascript
jQuery源码解读之hasClass()方法分析
Feb 20 Javascript
理解javascript中try...catch...finally
Dec 25 Javascript
微信小程序 五星评分(包括半颗星评分)实例代码
Dec 14 Javascript
JS填写银行卡号每隔4位数字加一个空格
Dec 19 Javascript
详解jQuery事件
Jan 13 Javascript
解决canvas画布使用fillRect()时高度出现双倍效果的问题
Aug 03 Javascript
vue动态路由配置及路由传参的方式
May 23 Javascript
React Router V4使用指南(精讲)
Sep 17 Javascript
解决vue项目input输入框双向绑定数据不实时生效问题
Aug 05 Javascript
Vue实现导航栏菜单
Aug 19 Javascript
微信小程序中用WebStorm使用LESS
Mar 08 #Javascript
Vue常用指令V-model用法
Mar 08 #Javascript
详解使用vue-router进行页面切换时滚动条位置与滚动监听事件
Mar 08 #Javascript
vue使用watch 观察路由变化,重新获取内容
Mar 08 #Javascript
js实现倒计时效果(小于10补零)
Mar 08 #Javascript
详解Vue监听数据变化原理
Mar 08 #Javascript
JS文件/图片从电脑里面拖拽到浏览器上传文件/图片
Mar 08 #Javascript
You might like
星际中的相关伤害
2020/03/04 星际争霸
PHP完整的日历类(CLASS)
2006/11/27 PHP
php下网站防IP攻击代码,超级实用
2010/10/24 PHP
smarty模板引擎中变量及变量修饰器用法实例
2015/01/22 PHP
PHP中abstract(抽象)、final(最终)和static(静态)原理与用法详解
2020/06/05 PHP
在IE下:float属性会影响offsetTop的取值
2006/12/22 Javascript
Jquery乱码的一次解决过程 图解教程
2010/02/20 Javascript
GWT中复制到剪贴板 js+flash实现复制 兼容性比较好
2010/03/07 Javascript
node.js chat程序如何实现Ajax long-polling长链接刷新模式
2012/03/13 Javascript
JS实现超精简响应鼠标显示二级菜单代码
2015/09/12 Javascript
jQuery中Chosen三级联动功能实例代码
2017/03/07 Javascript
react-router实现跳转传值的方法示例
2017/05/27 Javascript
nodeJS实现简单网页爬虫功能的实例(分享)
2017/06/08 NodeJs
快速处理vue渲染前的显示问题
2018/03/05 Javascript
vue select选择框数据变化监听方法
2018/08/24 Javascript
Vue组件实现触底判断
2019/06/26 Javascript
[48:47]VGJ.S vs NB 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[40:12]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python collections模块实例讲解
2014/04/07 Python
python获取当前用户的主目录路径方法(推荐)
2017/01/12 Python
Django框架用户注销功能实现方法分析
2019/05/28 Python
Python中函数参数匹配模型详解
2019/06/09 Python
Python中判断子串存在的性能比较及分析总结
2019/06/23 Python
Python Matplotlib 基于networkx画关系网络图
2019/07/10 Python
Python数据可视化:箱线图多种库画法
2019/11/06 Python
PyCharm 专业版安装图文教程
2020/02/20 Python
MyFrenchPharma中文网:最大的法国药妆平台
2016/10/07 全球购物
美国运动鞋和服装网上商店:YCMC
2018/09/15 全球购物
都柏林通行卡/城市通票:The Dublin Pass
2020/02/16 全球购物
大学本科生的个人自我评价
2013/12/09 职场文书
甜品店的创业计划书范文
2014/01/02 职场文书
KTV的创业计划书范文
2014/02/02 职场文书
互联网创业计划书写作技巧攻略
2014/03/23 职场文书
法人委托书的范本格式
2014/09/11 职场文书
英文道歉信
2015/01/20 职场文书
vue判断按钮是否可以点击
2022/04/09 Vue.js