完美实现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 相关文章推荐
菜鸟javascript基础整理1
Dec 06 Javascript
如何设置iframe高度自适应在跨域情况下的可用方法
Sep 06 Javascript
jQuery操作input值的各种方法总结
Nov 21 Javascript
jquery实现多屏多图焦点图切换特效的方法
May 04 Javascript
JavaScript简单实现鼠标移动切换图片的方法
Feb 23 Javascript
JavaScript数组的栈方法与队列方法详解
May 26 Javascript
深入浅析knockout源码分析之订阅
Jul 12 Javascript
利用React-router+Webpack快速构建react程序
Oct 27 Javascript
jquery.tableSort.js表格排序插件使用方法详解
Aug 12 Javascript
jQuery Datatable 多个查询条件自定义提交事件(推荐)
Aug 24 jQuery
深入理解JS的事件绑定、事件流模型
May 13 Javascript
详解项目升级到vue-cli3的正确姿势
Jan 28 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
PHP操作文件方法问答
2007/03/16 PHP
php 阴历-农历-转换类代码
2012/01/16 PHP
php银联网页支付实现方法
2015/03/04 PHP
JQuyer $.post 与 $.ajax 访问WCF ajax service 时的问题需要注意的地方
2011/09/20 Javascript
js 遍历对象的属性的代码
2011/12/29 Javascript
解析window.open的使用方法总结
2013/06/19 Javascript
javascript静态页面传值的三种方法分享
2013/11/12 Javascript
js获得网页背景色和字体色的方法
2014/03/21 Javascript
jQuery删除一个元素后淡出效果展示删除过程的方法
2015/03/18 Javascript
nodejs6下使用koa2框架实例
2017/05/18 NodeJs
vue组件父与子通信详解(一)
2017/11/07 Javascript
webpack4之SplitChunksPlugin使用指南
2018/06/12 Javascript
微信小程序云开发之数据库操作
2019/05/18 Javascript
iview实现动态表单和自定义验证时间段重叠
2021/01/10 Javascript
python通过post提交数据的方法
2015/05/06 Python
Python中return语句用法实例分析
2015/08/04 Python
Python设计模式中单例模式的实现及在Tornado中的应用
2016/03/02 Python
pytorch 获取tensor维度信息示例
2020/01/03 Python
使用Python打造一款间谍程序的流程分析
2020/02/21 Python
Django用户登录与注册系统的实现示例
2020/06/03 Python
matplotlib基础绘图命令之bar的使用方法
2020/08/13 Python
浅析Python 中的 WSGI 接口和 WSGI 服务的运行
2020/12/09 Python
Vans奥地利官方网站:美国原创极限运动潮牌
2018/09/30 全球购物
List, Set, Map是否继承自Collection接口?
2016/05/16 面试题
delegate与普通函数的区别
2014/01/22 面试题
英语专业毕业生自我鉴定
2013/11/09 职场文书
医学院校毕业生自荐信范文
2014/01/01 职场文书
关于感恩的演讲稿200字
2014/08/26 职场文书
单位未婚证明范本
2014/11/25 职场文书
优秀大学生事迹材料
2014/12/24 职场文书
2016年“世界气象日”广播稿
2015/12/17 职场文书
Mysql官方性能测试工具mysqlslap的使用简介
2021/05/21 MySQL
pytorch锁死在dataloader(训练时卡死)
2021/05/28 Python
oracle索引总结
2021/09/25 Oracle
Vertica集成Apache Hudi重磅使用指南
2022/03/31 Servers
Java中的Kafka为什么性能这么快及4大核心详析
2022/09/23 Java/Android