原生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中的if语句使用介绍
Nov 20 Javascript
浅析JavaScript中的类型和对象
Nov 29 Javascript
Thinkphp模板没有解析直接原样输出的解决方法
Oct 31 Javascript
js实现类似新浪微博首页内容渐显效果的方法
Apr 10 Javascript
javascript+ajax实现产品页面加载信息
Jul 09 Javascript
js实现TAB切换对应不同颜色的代码
Aug 31 Javascript
炫酷的js手风琴效果
Oct 13 Javascript
Node.js中文件操作模块File System的详细介绍
Jan 05 Javascript
Angular 开发学习之Angular CLI的安装使用
Dec 31 Javascript
jQuery实现的中英文切换功能示例
Jan 11 jQuery
jQuery Ajax async=&gt;false异步改为同步时,解决导致浏览器假死的问题
Jul 22 jQuery
VUE:vuex 用户登录信息的数据写入与获取方式
Nov 11 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基于socket实现客户端和服务端通讯功能
2017/07/13 PHP
默认让页面的第一个控件选中的javascript代码
2009/12/26 Javascript
javascript五图轮播切换实用版
2012/08/17 Javascript
js日期联动示例
2014/05/02 Javascript
JavaScript声明变量时为什么要加var关键字
2014/09/29 Javascript
使用angular写一个hello world
2015/01/23 Javascript
第五篇Bootstrap 排版
2016/06/21 Javascript
Vue.directive自定义指令的使用详解
2017/03/10 Javascript
Vue2.0 多 Tab切换组件的封装实例
2017/07/28 Javascript
详解webpack3编译兼容IE8的正确姿势
2017/12/21 Javascript
微信小程序App生命周期详解
2018/01/31 Javascript
微信小程序实现点击卡片 翻转效果
2019/09/04 Javascript
webpack4 optimization使用总结
2019/11/10 Javascript
在Python中操作字典之fromkeys()方法的使用
2015/05/21 Python
python开发中range()函数用法实例分析
2015/11/12 Python
详解python中xlrd包的安装与处理Excel表格
2016/12/16 Python
Python之Web框架Django项目搭建全过程
2017/05/02 Python
13个最常用的Python深度学习库介绍
2017/10/28 Python
python3下实现搜狗AI API的代码示例
2018/04/10 Python
对numpy的array和python中自带的list之间相互转化详解
2018/04/13 Python
Python实现简单查找最长子串功能示例
2019/02/26 Python
nginx黑名单和django限速,最简单的防恶意请求方法分享
2019/08/09 Python
python自动化工具之pywinauto实例详解
2019/08/26 Python
python rsync服务器之间文件夹同步脚本
2019/08/29 Python
Win下PyInstaller 安装和使用教程
2019/12/25 Python
Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色
2020/03/09 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
2020/05/25 Python
用Python制作音乐海报
2021/01/26 Python
护理职业生涯规划书
2014/01/24 职场文书
怎样拟定创业计划书
2014/05/01 职场文书
奥巴马的演讲稿
2014/05/15 职场文书
拔河比赛口号
2014/06/10 职场文书
2014年计划生育工作总结
2014/11/14 职场文书
谢师宴答谢词
2015/01/05 职场文书
利用python做表格数据处理
2021/04/13 Python
用javascript制作qq注册动态页面
2021/04/14 Javascript