原生js实现tab选项卡切换


Posted in Javascript onMarch 23, 2020

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

1.html部分

<body>
 <div id="tab">
 <div class="tab_menu">
 <ul>
 <li class="selected"><a href="#">时事</a></li>
 <li><a href="#">体育</a></li>
 <li><a href="#">娱乐</a></li>
 </ul>
 </div>
 <div class="tab_box">
 <div>时事</div>
 <div class="hide">体育</div>
 <div class="hide">娱乐</div>
 </div>
 </div>
 </body>

2.css部分:样式部分实现方法多种多样,这是我写的简单的demo,我最不擅长的css ><...

.tab_menu .selected{background-color:#aaa;}
 .tab_menu ul{height:30px;}
 .tab_menu ul li{float:left;list-style:none;width:50px;height:30px;color:#000;border:solid 1px gray;border-bottom:none; text-align:center;line-height:30px;margin-right:3px;}
 .tab_menu ul li a{text-decoration:none;}
 .tab_box{width:170px;height:150px;border:solid 1px gray;}
 .tab_box .hide{display:none;}

3.重要的js部分:

window.onload=function(){
 var oTab=document.getElementById('tab');
 var aLi=oTab.getElementsByTagName('li');
 var oTabBox=oTab.getElementsByTagName('div')[1];
 var aBox=oTabBox.getElementsByTagName('div');
 for(var i=0;i<aLi.length;i++){
 aLi[i].index=i;
 aLi[i].onclick=function(){
 for(var j=0;j<aLi.length;j++){
 aLi[j].className='';//取消菜单样式
 aBox[j].className='hide';//隐藏所有的tabDiv
 }
 aLi[this.index].className='selected';
 aBox[this.index].className='';
 }
 }
 }

原生js实现tab选项卡切换 

这个简单粗暴,完全没有考虑如果tabMenu、tabBox有多个样式的情况,不适应项目只是一个思路。很多地方需要完善。下面考虑标签多个class的情况,不过一般都有多个class,现在就要用到去除某个class,添加class的技能了。

3.1原生js中class的添加及删除。

window.onload=function(){
 var oTab=document.getElementById('tab');
 var aLi=oTab.getElementsByTagName('li');
 var oTabBox=oTab.getElementsByTagName('div')[1];
 var aBox=oTabBox.getElementsByTagName('div');
 for(var i=0;i<aLi.length;i++){
 aLi[i].index=i;
 aLi[i].onclick=function(){
 for(var j=0;j<aLi.length;j++){
 var aClass=aLi[j].className.split(' ');//元素.className是一个字符串,切割成数组
 var aClass1=aBox[j].className.split(' ');//同样的方法得到box的
 for(var z=0;z<aClass.length;z++){
 if(aClass[z]=='selected'){
  aClass.splice(z,1);//利用数组的splice方法删除找到的这个类
 }
 }
 for(var k=0;k<aClass1.length;k++){
 if(aClass1[k]=='hide'){
  aClass1.splice(k,1);
 }
 }
 aLi[j].className=aClass.join(' ');//所有的menu都去除selected样式
 aBox[j].className+=' hide';//所有box都隐藏
 aBox[this.index].className=aClass1.join(' ');//当前box显示
 aLi[this.index].className+=' selected';//当前menu添加select样式
 }
 
 }
 }
 }

亲测有效,不过都写在一个方法里有点乱,而且类多的时候效率也是问题,不过类应该不很很多吧==以后再优化吧,这个功能用jquery很简单。

如果大家还想深入学习,可以点击两个精彩的专题:javascript选项卡操作方法汇总 jquery选项卡操作方法汇总

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

Javascript 相关文章推荐
jquery属性选择器not has怎么写 行悬停高亮显示
Nov 13 Javascript
jQuery中的$.ajax()方法应用
May 06 Javascript
Javascript图片上传前的本地预览实例
Jun 16 Javascript
JavaScript实现MIPS乘法模拟的方法
Apr 17 Javascript
js获取字符串字节数方法小结
Jun 09 Javascript
javascript类型系统——日期Date对象全面了解
Jul 13 Javascript
Vue.js每天必学之过滤器与自定义过滤器
Sep 07 Javascript
BootStrap便签页的简单应用
Jan 06 Javascript
Angular指令封装jQuery日期时间插件datetimepicker实现双向绑定示例
Jan 22 Javascript
JS实现图片预览的两种方式
Jun 27 Javascript
iview的table组件自带的过滤器实现
Jul 12 Javascript
修改layui的后台模板的左侧导航栏可以伸缩的方法
Sep 10 Javascript
jquery的checkbox,radio,select等方法小结
Aug 30 #Javascript
Javascript日期格式化format函数的使用方法
Aug 30 #Javascript
浅析ES6的八进制与二进制整数字面量
Aug 30 #Javascript
AngularJS轻松实现双击排序的功能
Aug 30 #Javascript
jQuery simpleModal插件的使用介绍
Aug 30 #Javascript
Angular懒加载机制刷新后无法回退的快速解决方法
Aug 30 #Javascript
AngularJS 实现弹性盒子布局的方法
Aug 30 #Javascript
You might like
手把手教你使用DedeCms V3的在线采集图文教程
2007/04/03 PHP
让Json更懂中文(JSON_UNESCAPED_UNICODE)
2011/10/27 PHP
解析使用ThinkPHP应该掌握的调试手段
2013/06/20 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
php桥接模式应用案例分析
2019/10/23 PHP
IE中直接运行显示当前网页中的图片 推荐
2006/08/31 Javascript
Javascript的一种模块模式
2008/03/22 Javascript
Jquery拖拽并简单保存的实现代码
2010/11/28 Javascript
用js将内容复制到剪贴板兼容浏览器
2014/03/18 Javascript
封装了jQuery的Ajax请求全局配置
2015/02/05 Javascript
JS利用cookie记忆当前位置的防刷新导航效果
2015/10/15 Javascript
javascript表达式和运算符详解
2017/02/07 Javascript
详解Nodejs之npm&amp;package.json
2017/06/15 NodeJs
基于vue实现可搜索下拉框定制组件
2020/03/26 Javascript
Vue中props的使用详解
2018/06/15 Javascript
Makefile/cmake/node-gyp中区分判断不同平台的方法
2018/12/18 Javascript
NestJs 静态目录配置详解
2019/03/12 Javascript
微信小程序实现form表单本地储存数据
2019/06/27 Javascript
基于vue 实现表单中password输入的显示与隐藏功能
2019/07/19 Javascript
解决vue中使用proxy配置不同端口和ip接口问题
2019/08/14 Javascript
详解为element-ui的Select和Cascader添加弹层底部操作按钮
2020/02/07 Javascript
Javascript前端下载后台传来的文件流代码实例
2020/08/18 Javascript
Python3实现爬取指定百度贴吧页面并保存页面数据生成本地文档的方法
2018/04/22 Python
Python利用openpyxl库遍历Sheet的实例
2018/05/03 Python
在Pycharm中项目解释器与环境变量的设置方法
2018/10/29 Python
python 通过SSHTunnelForwarder隧道连接redis的方法
2019/02/19 Python
Python 解决OPEN读文件报错 ,路径以及r的问题
2019/12/19 Python
详解python with 上下文管理器
2020/09/02 Python
通俗讲解python 装饰器
2020/09/07 Python
Columbia美国官网:美国著名的户外服装品牌
2016/11/24 全球购物
英国老牌潮鞋店:Offspring
2019/08/19 全球购物
暑期社会实践感言
2014/02/25 职场文书
离职报告格式
2014/11/04 职场文书
质量保证书格式
2015/02/27 职场文书
博士给导师的自荐信
2015/03/06 职场文书
ThinkPHP5和ThinkPHP6的区别
2021/03/31 PHP