原生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 相关文章推荐
根据经纬度计算地球上两点之间的距离js实现代码
Mar 05 Javascript
利用js 进行输入框自动匹配字符的小例子
Jun 29 Javascript
ie7+背景透明文字不透明超级简单的实现方法
Jan 17 Javascript
jquery中$.post()方法的简单实例
Feb 04 Javascript
Three.js学习之网格
Aug 10 Javascript
详解jQuery中基本的动画方法
Dec 14 Javascript
jquery代码规范让代码越来越好看
Feb 03 Javascript
javascript 日期相减-在线教程(附代码)
Aug 17 Javascript
React从react-router路由上做登陆验证控制的方法
May 10 Javascript
bootstrap table.js动态填充单元格数据的多种方法
Jul 18 Javascript
微信小程序new Date()方法失效问题解决方法
Jul 29 Javascript
如何封装Vue Element的table表格组件
Feb 06 Vue.js
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
如何使用脚本模仿登陆过程
2006/11/22 PHP
如何在Ubuntu下启动Apache的Rewrite功能
2013/07/05 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
PHP实现常用排序算法的方法
2020/02/05 PHP
THINKPHP5分页数据对象处理过程解析
2020/10/28 PHP
一个JS小玩意 几个属性相加不能超过一个特定值.
2009/09/29 Javascript
关于JS字符串函数String.replace()
2013/04/07 Javascript
js对文章内容进行分页示例代码
2014/03/05 Javascript
Ext JS框架中日期函数的用法及日期选择控件的实现
2016/05/21 Javascript
基于百度地图实现产品销售的单位位置查看功能设计与实现
2016/10/21 Javascript
vue项目中做编辑功能传递数据时遇到问题的解决方法
2016/12/19 Javascript
微信小程序开发入门基础教程
2017/04/19 Javascript
ActiveX控件的使用-js实现打印超市小票功能代码详解
2017/11/22 Javascript
vue计算属性和监听器实例解析
2018/05/10 Javascript
详解如何webpack使用DllPlugin
2018/09/30 Javascript
小程序异步问题之多个网络请求依次执行并依次收集请求结果
2019/05/05 Javascript
JavaScript中的函数申明、函数表达式、箭头函数
2019/12/06 Javascript
微信小程序如何加载数据库真实数据的实现
2020/03/04 Javascript
JS如何判断对象是否包含某个属性
2020/08/29 Javascript
vue在图片上传的时候压缩图片
2020/11/18 Vue.js
Python 元组(Tuple)操作详解
2014/03/11 Python
Python实现屏幕截图的两种方式
2018/02/05 Python
Python爬虫工程师面试问题总结
2018/03/22 Python
python+openCV利用摄像头实现人员活动检测
2019/06/22 Python
python3通过udp实现组播数据的发送和接收操作
2020/05/05 Python
Python xlwt模块使用代码实例
2020/06/10 Python
CSS3制作轮播图的一种方法
2019/11/11 HTML / CSS
浅谈利用缓存来优化HTML5 Canvas程序的性能
2015/05/12 HTML / CSS
从当地商店送来的杂货:Instacart
2018/08/19 全球购物
消防安全检查制度
2014/02/04 职场文书
应聘编辑自荐信范文
2014/03/12 职场文书
诉讼财产保全担保书
2014/05/20 职场文书
学生无故旷课检讨书
2014/09/20 职场文书
技术股份合作协议书
2014/10/05 职场文书
党员倡议书
2015/01/19 职场文书
导师工作推荐信
2015/03/27 职场文书