js实现简单的可切换选项卡效果


Posted in Javascript onApril 10, 2015

本文实例讲述了js实现简单的可切换选项卡效果的方法。分享给大家供大家参考。具体如下:

如图,最简单的纯粹的选项卡

js实现简单的可切换选项卡效果

第一步,当然是先写html代码和css样式

<!DOCTYPE html>
<html>
<head>
<meta charset="gb2312" />
<title>无标题文档</title>
<style>
body,ul,li{margin:0; padding:0; font:12px/1.5 arial;}
ul,li{list-style:none;}
.wrap{width:500px; margin:20px auto;}
.hide{display:none;}
#tab_t{height:25px;border-bottom:1px solid #ccc;}
#tab_t li{float:left; width:80px; height:24px;
line-height:24px; margin:0 4px; text-align:center;
border:1px solid #ccc; border-bottom:none;
background:#f5f5f5; cursor:pointer}
#tab_t .act{ position:relative; height:25px;
margin-bottom:-1px; background:#fff;}
#tab_c{border:1px solid #ccc;
border-top:none; padding:20px;}
</style>
</head>
<body>
<div class="wrap">
 <ul id="tab_t">
 <li class="act">选择1</li>
 <li>选择2</li>
 <li>选择3</li>
 <li>选择4</li>
 </ul>
 <div id="tab_c">
 <div>内容1</div>
 <div class="hide">内容2</div>
 <div class="hide">内容3</div>
 <div class="hide">内容4</div>
 </div>
</div> 
</body>
</html>

第二步,实现简单的切换效果

要点1:

abc.document.getElementsByTagName("li")

取得abc下面的所有标签为li的元素,返回的是一个元素集合,有数组的一些属性。

要点2:循环,先循环给li加上onclick事件,再onlink事件点击的时候,再循环让所有选项卡的act样式去掉,所有的内容隐藏。然后让所点击的选项及对应内容显示。
要点3:

tab_t_li[i].index = i;

在循环时,给选项卡加一个额外的属性并赋值,以做选项卡和内容的对应。

<!DOCTYPE html>
<html>
<head>
<meta charset="gb2312" />
<title>无标题文档</title>
<style>
body,ul,li{margin:0; padding:0; font:12px/1.5 arial;}
ul,li{list-style:none;}
.wrap{width:500px; margin:20px auto;}
.hide{display:none;}
#tab_t{
height:25px;
border-bottom:1px solid #ccc;
}
#tab_t li{
float:left;
width:80px;
height:24px;
line-height:24px;
margin:0 4px;
text-align:center;
border:1px solid #ccc;
border-bottom:none;
background:#f5f5f5;
cursor:pointer
}
#tab_t .act{
position:relative;
height:25px;
margin-bottom:-1px;
background:#fff;
}
#tab_c{
border:1px solid #ccc;
border-top:none;
padding:20px;
}
</style>
<script>
window.onload = function(){
 var tab_t = document.getElementById("tab_t");
 var tab_t_li = tab_t.getElementsByTagName("li");
 var tab_c = document.getElementById("tab_c");
 var tab_c_li = tab_c.getElementsByTagName("div");
 var len = tab_t_li.length;
 var i=0;
 for(i=0; i<len; i++){
  tab_t_li[i].index = i;
  tab_t_li[i].onclick = function(){
   for(i=0; i<len; i++){
    tab_t_li[i].className = '';
    tab_c_li[i].className = 'hide';
   }
   tab_t_li[this.index].className = 'act';
   tab_c_li[this.index].className = '';
  }
 }
}
</script>
</head>
<body>
<div class="wrap">
 <ul id="tab_t">
 <li class="act">选择1</li>
 <li>选择2</li>
 <li>选择3</li>
 <li>选择4</li>
 </ul>
 <div id="tab_c">
 <div>内容1</div>
 <div class="hide">内容2</div>
 <div class="hide">内容3</div>
 <div class="hide">内容4</div>
 </div>
</div> 
</body>
</html>

第三步,写成函数。上面的写法只能一个页面用一个选项卡,如果再加一个的话,就需要复制一份,再改很多变量名。

要点:tab_t_li[i][evt] 因为传值的时候是字符串,如果直接写的话就是tab_t_li[i]."onclick"这样话是执行不了的,tab_t_li["onclick"]这样执行没问题。

好了,现在一个页面上就可以有多个切换了,只需要调用函数的时候,写上相应的id名和标签名,事件名称就可以了

<!DOCTYPE html>
<html>
<head>
<meta charset="gb2312" />
<title>无标题文档</title>
<style>
body,ul,li{margin:0; padding:0; font:12px/1.5 arial;}
ul,li{list-style:none;}
.wrap{width:500px; margin:20px auto;}
.hide{display:none;}
#tab_t{
height:25px;
border-bottom:1px solid #ccc;
}
#tab_t li{
float:left;
width:80px;
height:24px;
line-height:24px;
margin:0 4px;
text-align:center;
border:1px solid #ccc;
border-bottom:none;
background:#f5f5f5;
cursor:pointer
}
#tab_t .act{
position:relative;
height:25px;
margin-bottom:-1px;
background:#fff;
}
#tab_c{
border:1px solid #ccc;
border-top:none;
padding:20px;
}
</style>
<script>
window.onload = function(){
 tab("tab_t","li","tab_c","div","onmouseover")
 function tab(tab_t,tab_t_tag,tab_c,tag_c_tag,evt){
  var tab_t = document.getElementById(tab_t);
  var tab_t_li = tab_t.getElementsByTagName(tab_t_tag);
  var tab_c = document.getElementById(tab_c);
  var tab_c_li = tab_c.getElementsByTagName(tag_c_tag);
  var len = tab_t_li.length;
  var i=0;
  for(i=0; i<len; i++){
   tab_t_li[i].index = i;
   tab_t_li[i][evt] = function(){
    for(i=0; i<len; i++){
     tab_t_li[i].className = '';
     tab_c_li[i].className = 'hide';
    }
    tab_t_li[this.index].className = 'act';
    tab_c_li[this.index].className = '';
   }
  }
 }
}
</script>
</head>
<body>
<div class="wrap">
 <ul id="tab_t">
 <li class="act">选择1</li>
 <li>选择2</li>
 <li>选择3</li>
 <li>选择4</li>
 </ul>
 <div id="tab_c">
 <div>内容1</div>
 <div class="hide">内容2</div>
 <div class="hide">内容3</div>
 <div class="hide">内容4</div>
 </div>
</div> 
</body>
</html>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
Jquery实战_读书笔记1—选择jQuery
Jan 22 Javascript
JavaScript之自定义类型
May 04 Javascript
Jquery上传插件 uploadify v3.1使用说明
Jun 18 Javascript
js nextSibling属性和previousSibling属性概述及使用注意
Feb 16 Javascript
js用typeof方法判断undefined类型
Jul 15 Javascript
jquery点击改变class并toggle的实现代码
May 15 Javascript
微信小程序 tabs选项卡效果的实现
Jan 05 Javascript
基于jQuery代码实现圆形菜单展开收缩效果
Feb 13 Javascript
在vue中封装可复用的组件方法
Mar 01 Javascript
基于Vue2实现简易的省市区县三级联动组件效果
Nov 05 Javascript
Node中对非阻塞I/O、事件循环的知识点总结
Jan 05 Javascript
微信小程序开发(三):返回上一级页面并刷新操作示例【页面栈】
Jun 01 Javascript
js使用DOM操作实现简单留言板的方法
Apr 10 #Javascript
js实现简单鼠标跟随效果的方法
Apr 10 #Javascript
js实现交换运动效果的方法
Apr 10 #Javascript
js实现简单的左右两边固定广告效果实例
Apr 10 #Javascript
javascript实现简单的鼠标拖动效果实例
Apr 10 #Javascript
js简单实现点击左右运动的方法
Apr 10 #Javascript
js实现透明度渐变效果的方法
Apr 10 #Javascript
You might like
php 获取mysql数据库信息代码
2009/03/12 PHP
javascript 学习笔记(一)DOM基本操作
2011/04/08 Javascript
nodejs入门详解(多篇文章结合)
2012/03/07 NodeJs
JavaScript限定复选框的选择个数示例代码
2013/08/25 Javascript
比较不错的JS/JQuery显示或隐藏文本的方法
2014/02/13 Javascript
在JavaScript中重写jQuery对象的方法实例教程
2014/08/25 Javascript
手机开发必备技巧:javascript及CSS功能代码分享
2015/05/25 Javascript
JS实现生成会变大变小的圆环实例
2015/08/05 Javascript
JavaScript实现阿拉伯数字和中文数字互相转换
2016/06/12 Javascript
javaScript中定义类或对象的五种方式总结
2016/12/04 Javascript
angular.JS实现网页禁用调试、复制和剪切
2017/03/31 Javascript
深入理解Vue-cli搭建项目后的目录结构探秘
2017/07/13 Javascript
vue.js或js实现中文A-Z排序的方法
2018/03/08 Javascript
微信小程序购物车、父子组件传值及calc的注意事项总结
2018/11/14 Javascript
vue-cli脚手架引入弹出层layer插件的几种方法
2019/06/24 Javascript
解决layui checkbox 提交多个值的问题
2019/09/02 Javascript
JavaScript判断浏览器版本的方法
2019/11/03 Javascript
VUE页面中通过双击实现复制表格中内容的示例代码
2020/06/11 Javascript
[02:47]3.19DOTA2发布会 国服成长历程回顾
2014/03/25 DOTA
对于Python中RawString的理解介绍
2016/07/07 Python
对python mayavi三维绘图的实现详解
2019/01/08 Python
python之mock模块基本使用方法详解
2019/06/27 Python
python3射线法判断点是否在多边形内
2019/06/28 Python
Django form表单与请求的生命周期步骤详解
2020/06/07 Python
Html5 滚动穿透的方法
2019/05/13 HTML / CSS
HTML5录音实践总结(Preact)
2020/05/07 HTML / CSS
Godiva巧克力英国官网:比利时歌帝梵巧克力
2018/08/28 全球购物
乌克兰电子产品和家用电器购物网站:TOUCH
2019/08/09 全球购物
Marc O’Polo俄罗斯官方在线商店:德国高端时尚品牌
2019/12/26 全球购物
大学本科毕业生求职简历的自我评价
2013/10/09 职场文书
通信工程专业毕业生推荐信
2013/12/25 职场文书
总裁助理岗位职责
2014/02/17 职场文书
个人校本研修方案
2014/05/26 职场文书
爱护公物主题班会
2015/08/17 职场文书
幼儿园家长心得体会
2016/01/21 职场文书
实验心得体会范文
2016/01/25 职场文书