原生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 学习笔记(一)DOM基本操作
Apr 08 Javascript
js浮点数保留两位小数点示例代码(四舍五入)
Dec 26 Javascript
jquery使用hide方法隐藏指定id的元素
Mar 30 Javascript
基于JS实现PHP的sprintf函数实例
Nov 14 Javascript
值得分享的轻量级Bootstrap Table表格插件
May 30 Javascript
深入浅析JS是按值传递还是按引用传递(推荐)
Sep 18 Javascript
前端分页功能的实现以及原理(jQuery)
Jan 22 Javascript
微信小程序 滚动到某个位置添加class效果实现代码
Apr 19 Javascript
将 vue 生成的 js 上传到七牛的实例
Jul 28 Javascript
JS实现的ajax和同源策略(实例讲解)
Dec 01 Javascript
javascript实现文件拖拽事件
Mar 29 Javascript
Vue实现点击导航栏当前标签后变色功能
Aug 19 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
《星际争霸2》终章已出 RTS时代宣告终结
2017/02/07 星际争霸
zf框架的session会话周期及次数限制使用示例
2014/03/13 PHP
php的命名空间与自动加载实现方法
2019/08/25 PHP
JavaScript中的property和attribute介绍
2011/12/26 Javascript
Extjs4 Treegrid 使用心得分享(经验篇)
2013/07/01 Javascript
js动态设置鼠标事件示例代码
2013/10/30 Javascript
jquery获取选中的文本和值的方法
2014/07/08 Javascript
JavaScript中的apply和call函数详解
2014/07/20 Javascript
详解AngularJS中module模块的导入导出
2015/12/10 Javascript
基于jQuery实现仿QQ空间送礼物功能代码
2016/05/24 Javascript
onmouseover事件和onmouseout事件全面理解
2016/08/15 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
2016/11/20 Javascript
微信小程序-小说阅读小程序实例(demo)
2017/01/12 Javascript
浅谈mint-ui loadmore组件注意的问题
2017/11/08 Javascript
angular2中使用第三方js库的实例
2018/02/26 Javascript
node thread.sleep实现示例
2018/06/20 Javascript
前端天气插件tpwidget使用方法详解
2019/06/24 Javascript
webpack 如何解析代码模块路径的实现
2019/09/04 Javascript
JavaScript多种图形实现代码实例
2020/06/28 Javascript
在Python中使用Neo4j数据库的教程
2015/04/16 Python
简单的Apache+FastCGI+Django配置指南
2015/07/22 Python
python数组过滤实现方法
2015/07/27 Python
Python2.x版本中基本的中文编码问题解决
2015/10/12 Python
利用Python-iGraph如何绘制贴吧/微博的好友关系图详解
2017/11/02 Python
centos6.8安装python3.7无法import _ssl的解决方法
2018/09/17 Python
python实现指定文件夹下的指定文件移动到指定位置
2018/09/17 Python
印度低票价航空公司:GoAir
2017/10/11 全球购物
纽约市的奢华内衣目的地:Anya Lust
2019/08/02 全球购物
CK加拿大官网:Calvin Klein加拿大
2020/03/14 全球购物
化学相关工作求职信
2013/10/02 职场文书
二年级体育教学反思
2014/01/15 职场文书
三好学生演讲稿范文
2014/04/26 职场文书
财务审计整改报告
2014/11/06 职场文书
银行保安拾金不昧表扬稿
2015/05/05 职场文书
爱国主义电影观后感
2015/06/18 职场文书
婚宴新郎致辞
2015/07/28 职场文书