原生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 相关文章推荐
javascript中的prototype属性实例分析说明
Aug 09 Javascript
JavaScript 实现简单的倒计时弹窗DEMO附图
Mar 05 Javascript
javascript原生和jquery库实现iframe自适应高度和宽度
Jul 18 Javascript
jQuery实现表格颜色交替显示的方法
Mar 09 Javascript
jquery使用经验小结
May 20 Javascript
详解JavaScript中的every()方法
Jun 08 Javascript
javascript图片预加载完整实例
Dec 10 Javascript
JS获取子窗口中返回的数据实现方法
May 28 Javascript
js实现微博发布小功能
Jan 12 Javascript
微信小程序实战之自定义toast(6)
Apr 18 Javascript
关于vue.js发布后路径引用的问题解决
Aug 15 Javascript
jquery插件实现轮播图效果
Oct 19 jQuery
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的宝库目录--PEAR
2006/10/09 PHP
php获取某个目录大小的代码
2008/09/10 PHP
深入file_get_contents与curl函数的详解
2013/06/25 PHP
php preg_replace替换实例讲解
2013/11/04 PHP
JavaScript中将一个值转换为字符串的方法分析[译]
2012/09/21 Javascript
jquery中对于批量deferred的处理方法
2014/01/22 Javascript
jQuery实现个性翻牌效果导航菜单的方法
2015/03/09 Javascript
基于javascript实现的购物商城商品倒计时实例
2016/12/11 Javascript
Google 爬虫如何抓取 JavaScript 的内容
2017/04/07 Javascript
详解微信小程序设置底部导航栏目方法
2017/06/29 Javascript
AjaxUpLoad.js实现文件上传功能
2018/03/02 Javascript
JavaScript实现短暂提示框功能
2018/04/04 Javascript
vue2.0项目实现路由跳转的方法详解
2018/06/21 Javascript
vue组件表单数据回显验证及提交的实例代码
2018/08/30 Javascript
[01:50]2014DOTA2西雅图邀请赛 专访欢乐周宝龙
2014/07/08 DOTA
读写json中文ASCII乱码问题的解决方法
2016/11/05 Python
Python决策树分类算法学习
2017/12/22 Python
浅析python的优势和不足之处
2018/11/20 Python
Django 表单模型选择框如何使用分组
2019/05/16 Python
在Python中COM口的调用方法
2019/07/03 Python
13个Pandas实用技巧,助你提高开发效率
2020/08/19 Python
美国最大的电子宠物训练产品制造商:PetSafe
2018/10/12 全球购物
女性时尚在线:IVRose
2019/02/23 全球购物
英国拖鞋购买网站:Bedroom Athletics
2020/02/28 全球购物
Java面试题:请问一下代码输出是什么
2015/05/27 面试题
使用Vue.js和MJML创建响应式电子邮件
2021/03/23 Vue.js
庆八一活动方案
2014/01/25 职场文书
六年级学生评语
2014/04/22 职场文书
2014年征兵标语
2014/06/20 职场文书
自愿离婚协议书范文2014
2014/10/12 职场文书
硕士学位申请报告
2015/05/15 职场文书
2016教师节问候语
2015/11/10 职场文书
小程序后台PHP版本部署运行 LNMP+WNMP
2021/04/01 Servers
Python Parser的用法
2021/05/12 Python
Golang ort 中的sortInts 方法
2022/04/24 Golang
MySQL 数据 data 基本操作
2022/05/04 MySQL