完美实现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 相关文章推荐
超简单的jquery的AJAX用法
May 10 Javascript
jQuery)扩展jQuery系列之一 模拟alert,confirm(一)
Dec 04 Javascript
js TextArea的选中区域处理
Dec 28 Javascript
JQuery动态给table添加、删除行 改进版
Jan 19 Javascript
基于JQuery的多标签实现代码
Sep 19 Javascript
jQuery实现拖拽效果插件的方法
Mar 23 Javascript
浅析JavaScript中浏览器的兼容问题
Apr 19 Javascript
微信小程序 实现动态显示和隐藏某个控件
Apr 27 Javascript
JavaScript 获取元素在父节点中的下标(推荐)
Jun 28 Javascript
详解angular分页插件tm.pagination二次触发问题解决方案
Jul 20 Javascript
详解Vue 动态组件与全局事件绑定总结
Nov 11 Javascript
js打开word文档预览操作示例【不是下载】
May 23 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 面向对象详解
2012/09/13 PHP
js限制checkbox勾选的个数以及php获取多个checkbbox的方法深入解析
2013/07/18 PHP
php对二维数组进行排序的简单实例
2013/12/19 PHP
PHP实现微信JS-SDK接口选择相册及拍照并上传的方法
2016/12/05 PHP
Thinkphp 空操作、空控制器、命名空间(详解)
2017/05/05 PHP
PHP实现json_decode不转义中文的方法
2017/05/20 PHP
js获取浏览器的可视区域尺寸的实现代码
2011/11/30 Javascript
js函数内变量的作用域分析
2015/01/12 Javascript
EasyUI实现第二层弹出框的方法
2015/03/01 Javascript
jQuery的end()方法使用详解
2015/07/15 Javascript
JS定义类的六种方式详解
2016/05/12 Javascript
js获取ip和地区
2017/03/10 Javascript
JavaScript 中调用 Kotlin 方法实例详解
2017/06/09 Javascript
解决vue2.x中数据渲染以及vuex缓存的问题
2017/07/13 Javascript
React-Native使用Mobx实现购物车功能
2017/09/14 Javascript
vue 父组件中调用子组件函数的方法
2019/06/06 Javascript
ES6 class的应用实例分析
2019/06/27 Javascript
vue中使用GraphQL的实例代码
2019/11/04 Javascript
vue2.x 对象劫持的原理实现
2020/04/19 Javascript
使用Python的Twisted框架编写简单的网络客户端
2015/04/16 Python
在Python中使用sort()方法进行排序的简单教程
2015/05/21 Python
对numpy Array [: ,] 的取值方法详解
2018/07/02 Python
Pytorch卷积层手动初始化权值的实例
2019/08/17 Python
在win64上使用bypy进行百度网盘文件上传功能
2020/01/02 Python
windows下的pycharm安装及其设置中文菜单
2020/04/23 Python
基于Python实现体育彩票选号器功能代码实例
2020/09/16 Python
详解HTML5中的manifest缓存使用
2015/09/09 HTML / CSS
奇怪的鱼:Weird Fish
2018/03/18 全球购物
美国高级音响品牌:Master&Dynamic
2018/07/05 全球购物
技校生自我鉴定
2013/12/08 职场文书
道路交通事故人身损害赔偿协议书
2014/11/19 职场文书
2014年妇女工作总结
2014/12/06 职场文书
党员廉洁自律个人总结
2015/02/13 职场文书
幼儿园重阳节活动总结
2015/05/05 职场文书
2019年大学毕业生个人自我鉴定范文大全
2019/03/21 职场文书
mysql中整数数据类型tinyint详解
2021/12/06 MySQL