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中的运用上部
Nov 20 Javascript
Jquery 插件学习实例1 插件制作说明与tableUI优化
Apr 02 Javascript
js下用eval生成JSON对象
Sep 17 Javascript
javascript消除window.close()的提示窗口
May 20 Javascript
JS 实现计算器详解及实例代码(一)
Jan 08 Javascript
js 输入框 正则表达式(菜鸟必看教程)
Feb 19 Javascript
了解VUE的render函数的使用
Jun 08 Javascript
限时抢购-倒计时的完整实例(分享)
Sep 17 Javascript
利用node实现一个批量重命名文件的函数
Dec 21 Javascript
vue.js select下拉框绑定和取值方法
Mar 03 Javascript
Vue项目引进ElementUI组件的方法
Nov 11 Javascript
基于element-ui组件手动实现单选和上传功能
Dec 06 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
Windows PHP5和Apache的安装与配置
2009/06/08 PHP
php下关于Cannot use a scalar value as an array的解决办法
2010/08/08 PHP
php面向对象值单例模式
2016/05/03 PHP
php遍历解析xml字符串的方法
2016/05/05 PHP
ThinkPHP 整合Bootstrap Ajax分页样式
2016/12/23 PHP
JavaScript中null与undefined分析
2009/07/25 Javascript
ajax与302响应代码测试
2013/10/23 Javascript
JavaScript运行时库属性一览表
2014/03/14 Javascript
非常酷炫的Bootstrap图片轮播动画
2016/05/27 Javascript
使用bootstrapValidator插件进行动态添加表单元素并校验
2016/09/28 Javascript
Vue手把手教你撸一个 beforeEnter 钩子函数
2018/04/24 Javascript
8 个有用的JS技巧(推荐)
2019/07/03 Javascript
原生javascript的ajax请求及后台PHP响应操作示例
2020/02/24 Javascript
微信公众号网页分享功能开发的示例代码
2020/05/27 Javascript
浅谈Matplotlib简介和pyplot的简单使用——文本标注和箭头
2018/01/09 Python
Python实现端口检测的方法
2018/07/24 Python
Django框架静态文件使用/中间件/禁用ip功能实例详解
2019/07/22 Python
TensorFlow基于MNIST数据集实现车牌识别(初步演示版)
2019/08/05 Python
python单例设计模式实现解析
2020/01/07 Python
Pytorch 保存模型生成图片方式
2020/01/10 Python
python读取tif图片时保留其16bit的编码格式实例
2020/01/13 Python
python实现将列表中各个值快速赋值给多个变量
2020/04/02 Python
在python中修改.properties文件的操作
2020/04/08 Python
python中JWT用户认证的实现
2020/05/18 Python
Python3+SQLAlchemy+Sqlite3实现ORM教程
2021/02/16 Python
总结30个CSS3选择器
2017/04/13 HTML / CSS
在C中是否有模拟继承等面向对象程序设计特性的好方法
2012/05/22 面试题
经典c++面试题四
2015/05/14 面试题
幼儿园教师个人反思
2014/01/30 职场文书
租房合同协议书
2014/04/09 职场文书
党代会心得体会
2014/09/04 职场文书
小学秋季运动会报道稿
2014/09/30 职场文书
加强作风建设心得体会
2014/10/22 职场文书
爱国主义主题班会
2015/08/14 职场文书
Java循环队列与非循环队列的区别总结
2021/06/22 Java/Android
详解Anyscript开发指南绕过typescript类型检查
2022/09/23 Javascript