原生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实现单一html页面两套css切换代码
Apr 11 Javascript
js分页工具实例
Jan 28 Javascript
使用Node.js为其他程序编写扩展的基本方法
Jun 23 Javascript
详解JavaScript的闭包、IIFE、apply、函数与对象
Dec 21 Javascript
浅谈JS验证表单文本域输入空格的问题
Feb 14 Javascript
JavaScript Uploadify文件上传实例
Feb 28 Javascript
使用jQuery和ajax代替iframe的方法(详解)
Apr 12 jQuery
JavaScript实现三级联动菜单实例代码
Jun 26 Javascript
vue-cli 3.x 修改dist路径的方法
Sep 19 Javascript
微信网页登录逻辑与实现方法
Apr 29 Javascript
vue npm install 安装某个指定的版本操作
Aug 11 Javascript
jquery实现简易验证插件封装
Sep 13 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
使用Limit参数优化MySQL查询的方法
2008/11/12 PHP
php动态函数调用方法
2015/05/21 PHP
PHP hebrev()函数用法讲解
2019/02/21 PHP
彻底搞懂JS无缝滚动代码
2007/01/03 Javascript
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/01/13 Javascript
ExtJS4给Combobox设置列表中的默认值示例
2014/05/02 Javascript
js闭包实例汇总
2014/11/09 Javascript
什么是MEAN?JavaScript编程中的MEAN是什么意思?
2014/12/18 Javascript
JS实现动态给图片添加边框的方法
2015/04/01 Javascript
浅谈JavaScript中面向对象的的深拷贝和浅拷贝
2016/08/01 Javascript
Angular.JS判断复选框checkbox是否选中并实时显示
2016/11/30 Javascript
利用node.js搭建简单web服务器的方法教程
2017/02/20 Javascript
VUE中使用Vue-resource完成交互
2017/07/21 Javascript
详解webpack3如何正确引用并使用jQuery库
2017/08/26 jQuery
实现div滚动条默认最底部以及默认最右边的示例代码
2017/11/15 Javascript
不使用JavaScript实现菜单的打开和关闭效果demo
2018/05/01 Javascript
解决在vue项目中webpack打包后字体不生效的问题
2018/09/01 Javascript
layui实现checkbox的目录树tree的例子
2019/09/12 Javascript
Python和JavaScript间代码转换的4个工具
2016/02/22 Python
详细解读tornado协程(coroutine)原理
2018/01/15 Python
Python 实现还原已撤回的微信消息
2019/06/18 Python
python shutil文件操作工具使用实例分析
2019/12/25 Python
Pytorch释放显存占用方式
2020/01/13 Python
如何配置关联Python 解释器 Anaconda的教程(图解)
2020/04/30 Python
使用javascript和HTML5 Canvas画的四渐变色播放按钮效果
2014/04/10 HTML / CSS
您在慕尼黑的跑步商店:Lauf-bar
2019/10/11 全球购物
编写类String的构造函数、析构函数和赋值函数
2012/05/29 面试题
经济管理专业毕业生推荐信
2013/11/11 职场文书
青春演讲稿范文
2014/05/08 职场文书
德育标兵事迹材料
2014/08/24 职场文书
高校师德师风自我剖析材料
2014/09/29 职场文书
海南召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
2014年售票员工作总结
2014/11/19 职场文书
家庭聚会祝酒词
2015/08/11 职场文书
详解Nginx启动失败的几种错误处理
2021/04/01 Servers
Java 使用类型为Object的变量指向任意类型的对象
2022/04/13 Java/Android