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 相关文章推荐
JavaScript 参考教程
Dec 29 Javascript
Javascript 个人笔记(没有整理,很乱)
Jul 07 Javascript
JavaScript中的prototype使用说明
Apr 13 Javascript
jQuery前台数据获取实现代码
Mar 16 Javascript
jQueryUI写一个调整分类的拖放效果实现代码
May 10 Javascript
jQuery教程 $()包装函数来实现数组元素分页效果
Aug 13 Javascript
js和jquery如何获取图片真实的宽度和高度
Sep 28 Javascript
js实现简单鼠标跟随效果的方法
Apr 10 Javascript
javascript实现加载xml文件的方法
Nov 24 Javascript
javaScript事件机制兼容【详细整理】
Jul 23 Javascript
实例详解Node.js 函数
Jun 10 Javascript
vue多级复杂列表展开/折叠及全选/分组全选实现
Nov 05 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对象Object的概念 介绍
2012/06/14 PHP
php实现的九九乘法口诀表简洁版
2014/07/28 PHP
脚本吧 - 幻宇工作室用到js,超强推荐base.js
2006/12/23 Javascript
JS判断不同分辨率调用不同的CSS样式文件实现思路及测试代码
2013/01/23 Javascript
Extjs 3.3切换tab隐藏相应工具栏出现空白解决
2013/04/02 Javascript
20行代码实现的一个CSS覆盖率测试脚本
2013/07/07 Javascript
javascript禁制后退键(Backspace)实例代码
2013/11/15 Javascript
jQuery动态改变图片显示大小(修改版)的实现思路及代码
2013/12/24 Javascript
document.compatMode的CSS1compat使用介绍
2014/04/03 Javascript
jsPDF导出pdf示例
2014/05/02 Javascript
js获取窗口相对于屏幕左边和上边的位置坐标
2014/05/15 Javascript
使用delegate方法为一个tr标签加一个链接
2014/06/27 Javascript
jQuery中:last选择器用法实例
2014/12/30 Javascript
javascript 构造函数方式定义对象
2015/01/02 Javascript
JQuery中DOM加载与事件执行实例分析
2015/06/13 Javascript
angularjs的select使用及默认选中设置
2017/04/08 Javascript
js提取中文拼音首字母的封装工具类
2018/03/12 Javascript
Vue.js实现的表格增加删除demo示例
2018/05/22 Javascript
js如何找出字符串中的最长回文串
2018/06/04 Javascript
微信小程序传值以及获取值方法的详解
2019/04/29 Javascript
微信小程序通过js实现瀑布流布局详解
2019/08/28 Javascript
[02:41]《西雅图我们来了》2015国际邀请赛出征全记录
2015/07/23 DOTA
pytorch对可变长度序列的处理方法详解
2018/12/08 Python
python查询文件夹下excel的sheet名代码实例
2019/04/02 Python
一个入门级python爬虫教程详解
2021/01/27 Python
趣天网日本站:Qoo10 JP
2019/09/18 全球购物
德尔福集团DELPHI的笔试题
2012/02/22 面试题
工商管理本科毕业生求职信范文
2013/10/05 职场文书
大学生专业个人学习的自我评价
2013/10/26 职场文书
应届毕业生个人求职信范文
2014/01/29 职场文书
高中学生评语大全
2014/04/25 职场文书
夫妻双方自愿离婚协议书
2014/10/24 职场文书
2015年党员干部承诺书
2015/01/21 职场文书
2015年护士节活动策划方案
2015/05/04 职场文书
驾驶员管理制度范本
2015/08/06 职场文书
CSS中使用grid布局实现一套模板多种布局
2022/07/15 HTML / CSS