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 相关文章推荐
正则表达式判断是否存在中文和全角字符和判断包含中文字符串长度
Sep 27 Javascript
浅谈javascript中call()、apply()、bind()的用法
Apr 20 Javascript
js实现非常简单的焦点图切换特效实例
May 07 Javascript
javascript实现拖动元素交换位置
Nov 29 Javascript
js生成随机数(指定范围)的实例代码
Jul 10 Javascript
JavaScript的兼容性与调试技巧
Nov 22 Javascript
vue-cli如何添加less 以及sass
Jul 06 Javascript
ActiveX控件的使用-js实现打印超市小票功能代码详解
Nov 22 Javascript
基于express中路由规则及获取请求参数的方法
Mar 12 Javascript
vue路由导航守卫和请求拦截以及基于node的token认证的方法
Apr 07 Javascript
对Layer弹窗使用及返回数据接收的实例详解
Sep 26 Javascript
vue实现图书管理系统
Dec 29 Vue.js
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
加强版phplib的DB类
2008/03/31 PHP
基于Zend的Config机制的应用分析
2013/05/02 PHP
浅析PHP的静态成员函数效率更高的原因
2014/06/13 PHP
分享下php5类中三种数据类型的区别
2015/01/26 PHP
php中使用session防止用户非法登录后台的方法
2015/01/27 PHP
php专用数组排序类ArraySortUtil用法实例
2015/04/03 PHP
利用jquery操作select下拉列表框的代码
2010/06/04 Javascript
关于js中for in的缺陷浅析
2013/12/02 Javascript
js实现图片淡入淡出切换简易效果
2016/08/22 Javascript
AngulerJS学习之按需动态加载文件
2017/02/13 Javascript
javascript实现最长公共子序列实例代码
2018/02/05 Javascript
解决VUE中document.body.scrollTop为0的问题
2018/09/15 Javascript
详解如何使用koa实现socket.io官网的例子
2018/11/04 Javascript
vue实现的网易云音乐在线播放和下载功能案例
2019/02/18 Javascript
详解VScode编辑器vue环境搭建所遇问题解决方案
2019/04/26 Javascript
vue动态配置模板 'component is'代码
2019/07/04 Javascript
微信小程序开发之map地图组件定位并手动修改位置偏差
2019/08/17 Javascript
浅谈layui里的上传控件问题
2019/09/26 Javascript
javascript实现倒计时效果
2020/02/17 Javascript
Vue文本模糊匹配功能如何实现
2020/07/30 Javascript
vue中父子组件的参数传递和应用示例
2021/01/04 Vue.js
python判断、获取一张图片主色调的2个实例
2014/04/10 Python
Python3 中把txt数据文件读入到矩阵中的方法
2018/04/27 Python
3个用于数据科学的顶级Python库
2018/09/29 Python
centos7之Python3.74安装教程
2019/08/15 Python
基于Python实现简单学生管理系统
2020/07/24 Python
python实现简单猜单词游戏
2020/12/24 Python
分厂厂长岗位职责
2013/12/29 职场文书
卫生巾广告词
2014/03/18 职场文书
门前三包责任书
2014/04/15 职场文书
社会稳定风险评估方案
2014/06/02 职场文书
银行授权委托书样本
2014/10/13 职场文书
幼儿园2016圣诞节活动总结
2016/03/31 职场文书
60句有关成长的名言
2019/09/04 职场文书
《暗黑破坏神2:重制版》本周进行第一轮A测 目前可官网进行申请报名
2021/04/07 其他游戏
详解MySQL中的主键与事务
2021/05/27 MySQL