原生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 相关文章推荐
ext for eclipse插件安装方法
Apr 27 Javascript
JavaScript 无符号右移运算符
Apr 17 Javascript
javascript中的new使用
Mar 20 Javascript
基于jQuery+Cookie实现的防止刷新的在线考试倒计时
Jun 19 Javascript
Bootstrap创建可折叠的组件
Feb 23 Javascript
每日十条JavaScript经验技巧(一)
Jun 23 Javascript
vue实现的组件兄弟间通信功能示例
Dec 04 Javascript
详解关于webpack多入口热加载很慢的原因
Apr 24 Javascript
js实现多个标题吸顶效果
Jan 08 Javascript
Bootstrap table 服务器端分页功能实现方法示例
Jun 01 Javascript
详细分析Node.js 模块系统
Jun 28 Javascript
浅谈在vue-cli3项目中解决动态引入图片img404的问题
Aug 04 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读取MySQL数据代码
2008/06/05 PHP
thinkphp3.0 模板中函数的使用
2012/11/13 PHP
PHP判断json格式是否正确的实现代码
2017/09/20 PHP
PHP使用zlib扩展实现GZIP压缩输出的方法详解
2018/04/09 PHP
在你的网页中嵌入外部网页的方法
2007/04/02 Javascript
对象特征检测法判断浏览器对javascript对象的支持
2009/07/25 Javascript
jQuery 瀑布流 绝对定位布局(二)(延迟AJAX加载图片)
2012/05/23 Javascript
jquery动画1.加载指示器
2012/08/24 Javascript
JavaScript获得表单target属性的方法
2015/04/02 Javascript
jQuery解析XML文件同时动态增加js文件的方法
2015/06/01 Javascript
Highcharts使用简例及异步动态读取数据
2015/12/30 Javascript
原生js实现可拖拽效果
2017/02/28 Javascript
ES6新特性之数组、Math和扩展操作符用法示例
2017/04/01 Javascript
自定义PC微信扫码登录样式写法
2017/12/12 Javascript
vue自定义键盘信息、监听数据变化的方法示例【基于vm.$watch】
2019/03/16 Javascript
使用ThinkJs搭建微信中控服务的实现方法
2019/08/08 Javascript
d3.js 地铁轨道交通项目实战
2019/11/27 Javascript
vue打包静态资源后显示空白及static文件路径报错的解决
2020/09/02 Javascript
Python输出PowerPoint(ppt)文件中全部文字信息的方法
2015/04/28 Python
python 判断是否为正小数和正整数的实例
2017/07/23 Python
Python判断中文字符串是否相等的实例
2018/07/06 Python
Python WEB应用部署的实现方法
2019/01/02 Python
python3转换code128条形码的方法
2019/04/17 Python
Pandas中Series和DataFrame的索引实现
2019/06/27 Python
这可能是最好玩的python GUI入门实例(推荐)
2019/07/19 Python
Python matplotlib绘制饼状图功能示例
2019/09/10 Python
浅析python 动态库m.so.1.0错误问题
2020/05/09 Python
如何导出python安装的所有模块名称和版本号到文件中
2020/06/05 Python
python实现自动打卡的示例代码
2020/10/10 Python
python 下载m3u8视频的示例代码
2020/11/11 Python
Python列表元素删除和remove()方法详解
2021/01/04 Python
css3 clip实现圆环进度条的示例代码
2018/02/07 HTML / CSS
智利最大的网上商店:Linio智利
2016/11/24 全球购物
英国和爱尔兰最大的地毯零售商:Kukoon
2018/12/17 全球购物
Gibson London官网:以地道的英国男装而著称
2019/12/06 全球购物
《秋姑娘的信》教学反思
2014/02/28 职场文书