完美实现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 相关文章推荐
js 鼠标点击事件及其它捕获
Jun 04 Javascript
extjs两个tbar问题探讨
Aug 08 Javascript
XMLHttpRequest处理xml格式的返回数据(示例代码)
Nov 21 Javascript
浅析JavaScript中的同名标识符优先级
Dec 06 Javascript
JQuery动态添加和删除表格行的方法
Mar 09 Javascript
jQuery EasyUi 验证功能实例解析
Jan 06 Javascript
实例教学如何写vue插件
Nov 30 Javascript
jQuery与vue实现拖动验证码功能
Jan 30 jQuery
JS脚本加载后执行相应回调函数的操作方法
Feb 28 Javascript
使用bootstrap实现下拉框搜索功能的实例讲解
Aug 10 Javascript
Layui选项卡制作历史浏览记录的方法
Sep 28 Javascript
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
Nov 07 jQuery
微信小程序中用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
模仿OSO的论坛(五)
2006/10/09 PHP
php is_file()和is_dir()用于遍历目录时用法注意事项
2010/03/02 PHP
PHP开发的一些注意点总结
2010/10/12 PHP
详解WordPress开发中过滤属性以及Sql语句的函数使用
2015/12/25 PHP
PHP 信号管理知识整理汇总
2017/02/19 PHP
PHP面向对象多态性实现方法简单示例
2017/09/27 PHP
详谈symfony window下的安装 安装时候出现的问题以及解决方法
2017/09/28 PHP
客户端静态页面玩分页
2006/06/26 Javascript
javascript 可以拖动的DIV(二)
2009/06/26 Javascript
JavaScript 动态生成方法的例子
2009/07/22 Javascript
用jquery方法操作radio使其默认选项是否
2013/09/10 Javascript
js星星评分效果
2014/07/24 Javascript
jQuery 复合选择器应用的几个例子
2014/09/11 Javascript
js编写当天简单日历效果【实现代码】
2016/05/03 Javascript
jQuery Easyui Treegrid实现显示checkbox功能
2017/08/08 jQuery
for循环 + setTimeout 结合一些示例(前端面试题)
2017/08/30 Javascript
Bootstrap 按钮样式与使用代码详解
2018/12/09 Javascript
详解vue 不同环境配置不同的打包命令
2019/04/07 Javascript
vue多个元素的样式选择器问题
2019/11/29 Javascript
[31:33]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第一场
2014/05/23 DOTA
在Django的URLconf中使用多个视图前缀的方法
2015/07/18 Python
在Django框架中编写Context处理器的方法
2015/07/20 Python
python类中super()和__init__()的区别
2016/10/18 Python
python调用API实现智能回复机器人
2018/04/10 Python
详解Django中六个常用的自定义装饰器
2018/07/04 Python
Python定时任务工具之APScheduler使用方式
2019/07/24 Python
使用coverage统计python web项目代码覆盖率的方法详解
2019/08/05 Python
python默认参数调用方法解析
2020/02/09 Python
Numpy ndarray 多维数组对象的使用
2021/02/10 Python
linux面试题参考答案(2)
2015/12/06 面试题
如何写好升职自荐信
2014/01/06 职场文书
自查自纠工作总结
2014/10/15 职场文书
事业单位个人查摆问题及整改措施
2014/10/28 职场文书
酒店工程部岗位职责
2015/02/12 职场文书
暑期社会实践个人总结
2015/03/06 职场文书
2016银行求职自荐信
2016/01/28 职场文书