原生js实现tab选项卡切换

本文实例为大家分享了原生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='';
     }
    }
   }

这个简单粗暴,完全没有考虑如果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很简单。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 跨浏览器通用、可重用的选项卡tab切换js代码

    由于近来学了点js,于是我装逼道...不太难吧...就切一下display属性?同学无视我..说要搞个通用的...什么还要跟ajax交互..???我愣是没有听懂...到底要搞什么...权当作练手,我自己胡弄了一个. 需求:同学口中的通用我不知道神马意思...那我就按自己的理解吧.. ①跨浏览器,IE6+,FF,Chrome,Safari,Opera ②同一个页面可以用同一个js设置不同的选项卡. 说太多没啥米用,来看代码吧. 一.html部分(其实这还没啥好看的,设置了三个,前两个是一样的,通过

  • 4种JavaScript实现简单tab选项卡切换的方法

    本文实例讲解了4种JavaScript实现简单tab选项卡切换的方法,分享给大家供大家参考,具体内容如下 效果图: 方法一:for循环+if判断当前点击与自定义数组是否匹配 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>tab切换</title> <style type="text/cs

  • js实现Tab选项卡切换效果

    本文实例为大家分享了js实现Tab选项卡切换效果展示的具体代码,供大家参考,具体内容如下 html部分 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <link rel="stylesheet" href="tab.css"> <script src="tab.js&quo

  • js实现tab选项卡函数代码

    * { padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font-size: 12px; padding-top: 0px; } BODY { padding-left: 20px; padding-top: 20px; } .wid240 { width: 242px; margin-bottom: 20px; } .wid180 { width: 182px; } .tab { border-b

  • 使用vue.js写一个tab选项卡效果

    通常我们写tab选项卡的时候,一般都是用jq等去操作dom,给同级元素移除active类,然后,给被点击元素添加active类,但是在vue.js中,我们能不去操作dom我们就尽量不操作dom,那么该如何实现呢? 如果使用过vue-router,那么你会发现,vue-router在使用的时候其实就相当于一个tab选项卡,在点击之后,被点击的router-link元素会默认被添加上一个router-link-active的类,我们只需要设置这个类的样式即可.(当然,router-link-acti

  • js tab 选项卡

    一般需要事先写好css样式等function tab(sId) { var tabs = document.getElementsByTagName("H2"); var boxs = document.getElementsByTagName("h3"); if ( boxs[sId].style.display=="block"){ boxs[sId].style.display="none"; tabs[sId].sty

  • javascript实现tabs选项卡切换效果(自写原生js)

    现在的页面上有许多各种各样的页面效果,常用的有弹出层效果,无缝滚动效果,选项卡切换效果.今天分享一款自己用原生javascript写的选项卡切换效果,由于本人水平有限,如有问题请指出. 效果图如下:  html代码: 复制代码 代码如下: <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8"> <title>js-tabs</

  • javascript+css 新闻显示tab 选项卡效果

    我们_新闻显示选项卡效果(javascript+css) 新闻排行 国内 国际 社会 网评 新疆阜康铁路桥梁坍塌多节运煤车厢侧翻坠河 最高法:承诺不判赖昌星死刑没有超越法律程序 物权法:满70年住宅建设用地使用权将自动续期 弟弟被妻下药毒死男子买女尸为其配阴婚(图) 揭开郑州神枪手神秘面纱 头号狙击手是近视眼 美军高官:不排除和中国发生直接军事对抗可能 浙江东阳传奇富姐吴英涉嫌非法吸收存款被批捕 西方炒作"中国航母威胁论"称05年已正式服役 女孩生活无法自理请人大代表递交安乐死议案 建

  • Vue.js组件tabs实现选项卡切换效果

    今天给大家分享一个小颖自己写的vue组件,因为小颖也才接触vue没多久,如果有什么不足的地方,希望大家提出来,小颖加以改正.以下就是具体如何实现tabs啦. 调用示例: <template> <div class="tabs-contents"> <!-- 调用tabs组件 --> <tabs :flag.sync='tabsShowFlag' :navtitle='navTitle' :navdata='navData'> <di

  • 纯php打造的tab选项卡效果代码(不用js)

    1.根据get判断,获取get生成css 复制代码 代码如下: <style type="text/css"> <?php if(!isset($_GET['city_id'])) { $city_id = 12; } else { $city_id = $_GET['city_id']; } echo '.a'.$city_id.' { color:red; } '; for($i=12;$i<=16;$i++) { if($i != $city_id) {

随机推荐