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 相关文章推荐
jquery 圆形旋转图片滚动切换效果
Jan 19 Javascript
使用jquery实现select添加实现后台权限添加的效果
May 28 Javascript
jquery移动节点实例
Jan 14 Javascript
JavaScript两个变量交换值的实现方法
Mar 01 Javascript
JavaScript+HTML5实现的日期比较功能示例
Jul 12 Javascript
tween.js缓动补间动画算法示例
Feb 13 Javascript
基于vue-upload-component封装一个图片上传组件的示例
Oct 16 Javascript
koa2 从入门到精通(小结)
Jul 23 Javascript
Vue防止白屏添加首屏动画的实例
Oct 31 Javascript
详解ECMAScript2019/ES10新属性
Dec 06 Javascript
react组件基本用法示例小结
Apr 27 Javascript
Jquery $.map使用方法实例详解
Sep 01 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
超神学院:天使彦公认最美的三个视角,网友:我的天使快下凡吧!
2020/03/02 国漫
用PHP和ACCESS写聊天室(五)
2006/10/09 PHP
PHP中查询SQL Server或Sybase时TEXT字段被截断的解决方法
2009/03/10 PHP
php引用地址改变变量值的问题
2012/03/23 PHP
一个简单且很好用的php分页类
2013/10/26 PHP
php获取访问者IP地址汇总
2015/04/24 PHP
PHP使用自定义方法实现数组合并示例
2016/07/07 PHP
详解PHP处理密码的几种方式
2016/11/30 PHP
PHP的PDO预处理语句与存储过程
2019/01/27 PHP
input 输入框内的输入事件详细分析
2010/03/17 Javascript
JQuery 插件模板 制作jquery插件的朋友可以参考下
2010/03/17 Javascript
js 强制弹出窗口代码研究-又一款代码
2010/03/20 Javascript
JQuery live函数
2010/12/24 Javascript
Js从头学起(基本数据类型和引用类型的参数传递详细分析)
2012/02/16 Javascript
js导航栏单击事件背景变换示例代码
2014/01/13 Javascript
一个css与js结合的下拉菜单支持主流浏览器
2014/10/08 Javascript
js动态修改表格行colspan列跨度的方法
2015/03/30 Javascript
JavaScript包装对象使用详解
2015/07/09 Javascript
jquery图片轮播特效代码分享
2020/04/20 Javascript
java中String类型变量的赋值问题介绍
2016/03/23 Javascript
vue2.0实现分页组件的实例代码
2017/06/22 Javascript
让Vue也可以使用Redux的方法
2018/05/23 Javascript
Python实现的递归神经网络简单示例
2017/08/11 Python
matplotlib作图添加表格实例代码
2018/01/23 Python
python在文本开头插入一行的实例
2018/05/02 Python
Python socket实现的简单通信功能示例
2018/08/21 Python
Python基于matplotlib画箱体图检验异常值操作示例【附xls数据文件下载】
2019/01/07 Python
详解Python中is和==的区别
2019/03/21 Python
python 获取计算机的网卡信息
2021/02/18 Python
Rodd & Gunn澳大利亚官网:新西兰男装品牌
2018/09/25 全球购物
澳大利亚婴儿喂养品牌:Cherub Baby
2018/11/01 全球购物
Hotels.com印度:酒店预订
2019/05/11 全球购物
员工工作表现评语
2014/04/26 职场文书
行政监察建议书
2014/05/19 职场文书
学生保证书
2015/01/16 职场文书
军训新闻稿范文
2015/07/17 职场文书