原生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 相关文章推荐
jquery入门—选择器实现隔行变色实例代码
Jan 04 Javascript
javascript中onclick(this)用法介绍
Apr 19 Javascript
DeviceOne 让你一见钟情的App快速开发平台
Feb 17 Javascript
使用开源工具制作网页验证码的方法
Oct 17 Javascript
JavaScript使用原型和原型链实现对象继承的方法详解
Apr 05 Javascript
基于JS实现网页中的选项卡(两种方法)
Jun 16 Javascript
javaScript之split与join的区别(详解)
Nov 08 Javascript
JS求Number类型数组中最大元素方法
Apr 08 Javascript
微信小程序实现联动选择器
Feb 15 Javascript
ionic2.0双击返回键退出应用
Sep 17 Javascript
vue 解决data中定义图片相对路径页面不显示的问题
Aug 13 Javascript
详解阿里Node.js技术文档之process模块学习指南
Jan 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
DIY一个适配电脑声卡的动圈话筒放大器
2021/03/02 无线电
转PHP手册及PHP编程标准
2006/12/17 PHP
一个php导出oracle库的php代码
2009/04/20 PHP
php class中self,parent,this的区别以及实例介绍
2013/04/24 PHP
php抓取页面的几种方法详解
2013/06/17 PHP
PHP计算一年多少个星期和每周的开始和结束日期
2014/07/01 PHP
php+mysql实现用户注册登陆的方法
2015/01/03 PHP
php 指定范围内多个随机数代码实例
2016/07/18 PHP
thinkphp表单上传文件并将文件路径保存到数据库中
2016/07/28 PHP
关于实现代码语法标亮 dp.SyntaxHighlighter
2007/02/02 Javascript
js 禁用浏览器的后退功能的简单方法
2008/12/10 Javascript
解析John Resig Simple JavaScript Inheritance代码
2012/12/03 Javascript
js、css、img等浏览器缓存问题的2种解决方案
2013/10/23 Javascript
javascript原型链继承用法实例分析
2015/01/28 Javascript
jQuery插件编写步骤详解
2016/06/03 Javascript
用nodejs搭建websocket服务器
2017/01/23 NodeJs
yii form 表单提交之前JS在提交按钮的验证方法
2017/03/15 Javascript
在Vue中使用echarts的实例代码(3种图)
2017/07/10 Javascript
浅谈关于angularJs中使用$.ajax的注意点
2017/08/12 Javascript
vue项目实现github在线预览功能
2018/06/20 Javascript
jquery ajax 请求小技巧实例分析
2019/11/11 jQuery
Python处理字符串之isspace()方法的使用
2015/05/19 Python
浅析Python中的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
详解Python装饰器由浅入深
2016/12/09 Python
python将邻接矩阵输出成图的实现
2019/11/21 Python
详细分析Python可变对象和不可变对象
2020/07/09 Python
荷兰皇家航空公司官方网站:KLM Royal Dutch Airlines
2017/12/07 全球购物
草莓网化妆品澳大利亚站:Strawberrynet AU
2017/12/18 全球购物
MIXIT官网:俄罗斯最大的化妆品公司之一
2020/01/25 全球购物
向全球直邮输送天然健康产品:iHerb.com
2020/05/03 全球购物
linux面试题参考答案(8)
2016/04/19 面试题
工程项目经理岗位职责
2013/12/15 职场文书
酒店总经理助理岗位职责
2014/02/01 职场文书
爱与责任演讲稿
2014/05/20 职场文书
社会实践的活动方案
2014/08/22 职场文书
MySQL EXPLAIN输出列的详细解释
2021/05/12 MySQL