javascript通过获取html标签属性class实现多选项卡的方法


Posted in Javascript onJuly 27, 2015

本文实例讲述了javascript通过获取html标签属性class实现多选项卡的方法。分享给大家供大家参考。具体实现方法如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>原生javascript通过获取html标签属性class实现多选项卡</title>
    <style type="text/css">
      .tab {
        clear: both;
        margin: 20px auto;
        padding: 10px;
        width: 680px;
        overflow: hidden;
      }
      .tab .tab-menu {
        margin: 0;
        padding: 0;
        list-style: none;
      }
      .tab .tab-menu li {
        display: inline;
        margin: 0 2px 0 0;
      }      
      .tab .tab-menu li a {
        padding: 0 1em;
        text-decoration: none;
        color: #a80;
        background: #fe5;
      }
      .tab .tab-menu li a:hover {
        background: #fc0;
        color: #540;
      }
      .tab .tab-menu .active {
      }
      .tab .tab-menu .active a {
        padding-bottom: 2px;
        font-weight: bold;
        color: black;
        background: #fc0;
      }
      .tab .tab-panel {
        padding: 1em;
        border: 2px solid #fc0;
        background: #fff;
      }
      .tab .tab-panel h2 {
        font-size: 1.5em;
        color: #fc0;
      }
      .tab .tab-none {
        display: none;
      }
    </style>
    <script type="text/javascript">      
      function Tab(style, scope){
        this.oItem = this.getByClass(style, scope);
        this.init();
      }
      Tab.prototype = {
        init: function(){
          var that = this, menu, m;
          for(var i = 0, len = this.oItem.length; i < len; i++){
            menu = this.oItem[i].getElementsByTagName('li');
            for(var j = 0, mLen = menu.length; j < mLen; j++){
              m = menu[j];
              m.index = j;
              m.onmouseover = function(){that.focus(this);}
            }
          }
        },
        focus: function(o){
          var par = o.parentNode.parentNode, panel = par.getElementsByTagName('div'), 
            btn = par.getElementsByTagName('li'), len = btn.length;
          for(var i = 0; i < len; i++){
            btn[i].className = '';
            panel[i].className = this.changeClass(panel[i].className, 'tab-none', true);
          }
          o.className = 'active';
          panel[o.index].className = this.changeClass(panel[o.index].className, 'tab-none', false);
        },
        changeClass: function(cl, cl2, add){
          var flag;
          if(cl.match(cl2) != null) flag = true;
          if(add ^ flag) return flag ? cl.replace(cl2, '') : cl += ' ' + cl2;
          return cl;
        },
        getByClass: function(cla, obj){
          var obj = obj || document, arr = [];
          if(document.getElementsByClassName){
            return document.getElementsByClassName(cla);
          } else {
            var all = obj.getElementsByTagName('*');
            for(var i = 0, len = all.length; i < len; i++){
              if(all[i].className.match(cla) != null) arr.push(all[i]);
            }
            return arr;
          }
        }
      }
      window.onload = function(){
        new Tab('tab-menu', null);
      }
    </script>
  </head>
  <body>
    <div class="tab">
      <ul class="tab-menu">
        <li class="active"><a href="">111</a></li>
        <li><a href="">122</a></li>
        <li><a href="">133</a></li>
      </ul>
      <div class="tab-panel">
        111
      </div>
      <div class="tab-panel tab-none">
        122
      </div>
      <div class="tab-panel tab-none">
        133
      </div>
    </div>
    <div class="tab">
      <ul class="tab-menu">
        <li class="active"><a href="">211</a></li>
        <li><a href="">222</a></li>
        <li><a href="">233</a></li>
      </ul>
      <div class="tab-panel">
        211
      </div>
      <div class="tab-panel tab-none">
        222
      </div>
      <div class="tab-panel tab-none">
        233
      </div>
    </div>
    <div class="tab">
      <ul class="tab-menu">
        <li class="active"><a href="">311</a></li>
        <li><a href="">322</a></li>
        <li><a href="">333</a></li>
      </ul>
      <div class="tab-panel">
        311
      </div>
      <div class="tab-panel tab-none">
        322
      </div>
      <div class="tab-panel tab-none">
        333
      </div>
    </div>
  </body>
</html>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
[转]JS宝典学习笔记
Feb 07 Javascript
JavaScript数值转换的三种方式总结
Jul 31 Javascript
Javascript 数组排序详解
Oct 22 Javascript
JavaScript极简入门教程(三):数组
Oct 25 Javascript
javascript单例模式的简单实现方法
Jul 25 Javascript
javascript入门教程基础篇
Nov 16 Javascript
Jquery on绑定的事件 触发多次实例代码
Dec 08 Javascript
各种选择框jQuery的选中方法(实例讲解)
Jun 27 jQuery
Vue.js中的computed工作原理
Mar 22 Javascript
Vue请求JSON Server服务器数据的实现方法
Nov 02 Javascript
详解微信小程序-canvas绘制文字实现自动换行
Apr 26 Javascript
jQuery实现手风琴特效
Jan 11 jQuery
readonly和disabled属性的区别
Jul 26 #Javascript
javascript实现继承的简单实例
Jul 26 #Javascript
IE10中flexigrid无法显示数据的解决方法
Jul 26 #Javascript
javascript实现将文件保存到本地方法汇总
Jul 26 #Javascript
javascript获取当前的时间戳的方法汇总
Jul 26 #Javascript
鼠标经过子元素触发mouseout,mouseover事件的解决方案
Jul 26 #Javascript
javascript中setTimeout使用指南
Jul 26 #Javascript
You might like
php常用的安全过滤函数集锦
2014/10/09 PHP
php调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
2015/07/29 PHP
php微信公众号开发模式详解
2016/11/28 PHP
基于jQuery的模仿新浪微博时间的组件
2011/10/04 Javascript
模拟电子签章盖章效果的jQuery插件源码
2013/06/24 Javascript
JavaScript的21条基本知识点
2014/03/04 Javascript
jquery插件开发之实现jquery手风琴功能分享
2014/03/10 Javascript
jQuery+ajax实现鼠标单击修改内容的思路
2014/06/29 Javascript
举例讲解AngularJS中的模块
2015/06/17 Javascript
浅谈angularJS 作用域
2015/07/05 Javascript
javascript 判断两个日期之差的示例代码
2015/09/05 Javascript
JS实现的左侧竖向滑动菜单效果代码
2015/10/19 Javascript
JS组件Form表单验证神器BootstrapValidator
2016/01/26 Javascript
jquery实现拖动效果
2016/08/10 Javascript
Vue触发隐藏input file的方法实例详解
2019/08/14 Javascript
vue悬浮可拖拽悬浮按钮的实例代码
2019/08/20 Javascript
原生JavaScript实现弹幕组件的示例代码
2020/10/12 Javascript
[01:03:47]VP vs NewBee Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
[49:02]KG vs Infamous 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
python去除文件中重复的行实例
2018/06/29 Python
Python调用graphviz绘制结构化图形网络示例
2019/11/22 Python
Python使用psutil获取进程信息的例子
2019/12/17 Python
Python实现新型冠状病毒传播模型及预测代码实例
2020/02/05 Python
Python 剪绳子的多种思路实现(动态规划和贪心)
2020/02/24 Python
完美解决ARIMA模型中plot_acf画不出图的问题
2020/06/04 Python
如何用python爬取微博热搜数据并保存
2021/02/20 Python
汽车装潢店创业计划书范文
2014/02/05 职场文书
财政专业求职信范文
2014/02/19 职场文书
2014年迎新年活动方案
2014/02/19 职场文书
战略合作意向书
2014/07/29 职场文书
2015年司机年终工作总结
2015/05/14 职场文书
小鞋子观后感
2015/06/05 职场文书
2019年年中职场激励人心语录30条
2019/08/07 职场文书
800字作文之大雪
2019/12/04 职场文书
面试中canvas绘制图片模糊图片问题处理
2022/03/13 Javascript
详解pytorch创建tensor函数
2022/03/22 Python