原生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防止表单重复提交实现代码
Sep 05 Javascript
javascript 应用小技巧方法汇总
Jul 05 Javascript
JS实现滑动菜单效果代码(包括Tab,选项卡,横向等效果)
Sep 24 Javascript
使用jquery插件qrcode生成二维码
Oct 22 Javascript
JavaScript编程中window的location与history对象详解
Oct 26 Javascript
jqGrid中文文档之选项设置
Dec 02 Javascript
JS获取浮动(float)元素的style.left值为空的快速解决办法
Feb 19 Javascript
Angular2 之 路由与导航详细介绍
May 26 Javascript
ionic使用angularjs表单验证(模板验证)
Dec 12 Javascript
解析JS在获取当前月的最后一天遇到的坑
Aug 30 Javascript
Vue实现 点击显示再点击隐藏效果(点击页面空白区域也隐藏效果)
Jan 16 Javascript
解析原生JS getComputedStyle
May 25 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
PHP合并数组+与array_merge的区别分析
2010/08/01 PHP
PHP中header和session_start前不能有输出原因分析
2013/01/11 PHP
如何用PHP做到页面注册审核
2017/03/02 PHP
js history对象简单实现返回和前进
2013/10/30 Javascript
jQuery仿gmail实现fixed布局的方法
2015/05/27 Javascript
JS实现获取键盘按下的按键并显示在页面上的方法
2015/11/04 Javascript
使用BootStrapValidator完成前端输入验证
2016/09/28 Javascript
Base64(二进制)图片编码解析及在各种浏览器的兼容性处理
2017/02/09 Javascript
AngularJs用户登录问题处理(交互及验证、阻止FQ处理)
2017/10/26 Javascript
AngularJS实现controller控制器间共享数据的方法示例
2017/10/30 Javascript
小程序视频列表中视频的播放与停止的示例代码
2018/07/20 Javascript
在vue 中使用 less的教程详解
2018/09/26 Javascript
JavaScript实现获取两个排序数组的中位数算法示例
2019/02/26 Javascript
Vue使用Canvas绘制图片、矩形、线条、文字,下载图片
2019/04/26 Javascript
fastadmin中调用js的方法
2019/05/14 Javascript
bootstrap中的导航条实例代码详解
2019/05/20 Javascript
js实现秒表计时器
2019/12/16 Javascript
Python help()函数用法详解
2014/03/11 Python
使用IronPython把Python脚本集成到.NET程序中的教程
2015/03/31 Python
Python最基本的数据类型以及对元组的介绍
2015/04/14 Python
Python字典操作详细介绍及字典内建方法分享
2018/01/04 Python
一步步教你用python的scrapy编写一个爬虫
2019/04/17 Python
关于pymysql模块的使用以及代码详解
2019/09/01 Python
Django Admin中增加导出CSV功能过程解析
2019/09/04 Python
使用IDLE的Python shell窗口实例详解
2019/11/19 Python
python利用dlib获取人脸的68个landmark
2019/11/27 Python
django form和field具体方法和属性说明
2020/07/09 Python
Clos19英国:高档香槟、葡萄酒和烈酒在线购物平台
2020/07/10 全球购物
不假外出检讨书
2014/01/27 职场文书
《四季》教学反思
2014/04/08 职场文书
应届大专生求职信
2014/06/26 职场文书
商务邀请函
2015/01/30 职场文书
2015年幼儿园大班工作总结
2015/04/25 职场文书
领导干部学习三严三实心得体会
2016/01/05 职场文书
Go语言空白表示符_的实例用法
2021/07/04 Golang
python 使用tkinter与messagebox写界面和弹窗
2022/03/20 Python