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+FSO遍历文件夹下文件并显示
Mar 07 Javascript
jquery select多选框的左右移动 具体实现代码
Jul 03 Javascript
js(jQuery)获取时间的方法及常用时间类搜集
Oct 23 Javascript
JavaScript异步回调的Promise模式封装实例
Jun 07 Javascript
jQuery带箭头提示框tooltips插件集锦
Nov 17 Javascript
Bootstrap登陆注册页面开发教程
Jul 12 Javascript
简单谈谈JS数组中的indexOf方法
Oct 13 Javascript
jQuery Dialog 打开时自动聚焦的解决方法(两种方法)
Nov 24 Javascript
JavaScript寄生组合式继承实例详解
Jan 06 Javascript
详解解决使用axios发送json后台接收不到的问题
Jun 27 Javascript
Vue-Router基础学习笔记(小结)
Oct 15 Javascript
微信小程序登录对接Django后端实现JWT方式验证登录详解
Jul 29 Javascript
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上传文件并存储到mysql数据库的方法
2015/03/16 PHP
php实现随机生成易于记忆的密码
2015/06/19 PHP
php实现编辑和保存文件的方法
2015/07/20 PHP
PHP面向对象程序设计高级特性详解(接口,继承,抽象类,析构,克隆等)
2016/12/02 PHP
PHP获取表单数据与HTML嵌入PHP脚本的实现
2017/02/09 PHP
javascript测试题练习代码
2012/10/10 Javascript
关于onchange事件在IE和FF下的表现及解决方法
2014/03/08 Javascript
js监听鼠标事件控制textarea输入字符串的个数
2014/09/29 Javascript
详解js中构造流程图的核心技术JsPlumb(2)
2015/12/08 Javascript
JS构造函数与原型prototype的区别介绍
2016/07/04 Javascript
Three.js学习之几何形状
2016/08/01 Javascript
用Vue.js实现监听属性的变化
2016/11/17 Javascript
Javascript 制作图形验证码实例详解
2016/12/22 Javascript
vuejs父子组件之间数据交互详解
2017/08/09 Javascript
javascript中的隐式调用
2018/02/10 Javascript
angular6的响应式表单的实现
2018/10/10 Javascript
vue实现codemirror代码编辑器中的SQL代码格式化功能
2019/08/27 Javascript
浅谈Three.js截图并下载的大坑
2019/11/01 Javascript
vue跳转页面的几种方法(推荐)
2020/03/26 Javascript
python写xml文件的操作实例
2014/10/05 Python
python操作CouchDB的方法
2014/10/08 Python
python 第三方库的安装及pip的使用详解
2017/05/11 Python
python 处理dataframe中的时间字段方法
2018/04/10 Python
Python3多线程基础知识点
2019/02/19 Python
学习python分支结构
2019/05/17 Python
Jupyter Notebook打开任意文件夹操作
2020/04/14 Python
详解CSS3的perspective属性设置3D变换距离的方法
2016/05/23 HTML / CSS
英国助听器购物网站:Hearing Direct
2018/08/21 全球购物
英国Lookfantastic中文网站:护肤品美妆美发购物(英国直邮)
2020/04/27 全球购物
销售业务实习自我鉴定
2013/09/23 职场文书
手机业务员岗位职责
2013/12/13 职场文书
2014庆六一活动方案
2014/03/02 职场文书
汇源肾宝广告词
2014/03/20 职场文书
科长竞争上岗演讲稿
2014/05/12 职场文书
企业文化标语口号
2014/06/09 职场文书
关于mysql中时间日期类型和字符串类型的选择
2021/11/27 MySQL