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实现仿新浪微博获取文本框能输入的字数代码
Feb 22 Javascript
js无刷新操作table的行和列
Mar 27 Javascript
JS将光标聚焦在文本最后的实现代码
Mar 28 Javascript
JavaScript实现弹出子窗口并传值给父窗口
Dec 18 Javascript
微信小程序 表单Form实例详解(附源码)
Dec 22 Javascript
jQuery插件form-validation-engine正则表达式操作示例
Feb 09 Javascript
EasyUI中的dataGrid的行内编辑
Jun 22 Javascript
关于JavaScript中的this指向问题总结篇
Jul 23 Javascript
javascript trie前缀树的示例
Jan 29 Javascript
javascript实现的字符串转换成数组操作示例
Jun 13 Javascript
JavaScript类的继承多种实现方法
May 30 Javascript
H5+css3+js搭建带验证码的登录页面
Oct 11 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短信接口代码
2016/05/13 PHP
PHP实现无限极分类的两种方式示例【递归和引用方式】
2019/03/25 PHP
PHP从零开始打造自己的MVC框架之类的自动加载实现方法详解
2019/06/03 PHP
php写入文件不覆盖的实例讲解
2019/09/17 PHP
js实现动态添加、删除行、onkeyup表格求和示例
2013/08/18 Javascript
页面js遇到乱码问题的解决方法是和无法转码的情况
2014/04/30 Javascript
JavaScript中的索引数组、关联数组和静态数组、动态数组讲解
2014/11/08 Javascript
JS是按值传递还是按引用传递
2015/01/30 Javascript
浅析JavaScript中的变量复制、参数传递和作用域链
2016/01/13 Javascript
最简单的tab切换实例代码
2016/05/13 Javascript
深入浅析knockout源码分析之订阅
2016/07/12 Javascript
终于实现了!精彩的jquery弹幕效果
2016/07/18 Javascript
javascript中setAttribute兼容性用法分析
2016/12/12 Javascript
微信小程序开发(二)图片上传+服务端接收详解
2017/01/11 Javascript
JS中绑定事件顺序(事件冒泡与事件捕获区别)
2017/01/24 Javascript
详解Vuejs2.0之异步跨域请求
2017/04/20 Javascript
vue实现图片滚动的示例代码(类似走马灯效果)
2018/03/03 Javascript
微信小程序如何修改本地缓存key中单个数据的详解
2019/04/26 Javascript
JavaScript 装逼指南(js另类写法)
2020/05/10 Javascript
[03:09]显微镜下的DOTA2第一期——带你走进华丽的DOTA2世界
2014/06/20 DOTA
python判断、获取一张图片主色调的2个实例
2014/04/10 Python
python错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
2014/08/22 Python
在主机商的共享服务器上部署Django站点的方法
2015/07/22 Python
python实现K最近邻算法
2018/01/29 Python
python生成器与迭代器详解
2019/01/01 Python
python获取地震信息 微信实时推送
2019/06/18 Python
Pandas DataFrame数据的更改、插入新增的列和行的方法
2019/06/25 Python
详解python os.path.exists判断文件或文件夹是否存在
2020/11/16 Python
Python常用断言函数实例汇总
2020/11/30 Python
TensorFlow低版本代码自动升级为1.0版本
2021/02/20 Python
html5使用canvas绘制文字特效
2014/12/15 HTML / CSS
Canvas globalCompositeOperation
2018/12/18 HTML / CSS
英国人最爱的饰品网站:Accessorize
2016/08/22 全球购物
日本小田急百货官网:Odakyu
2018/07/19 全球购物
创业计划书之少年玩具店
2019/09/05 职场文书
解决Git推送错误non-fast-forward的方法
2022/06/25 Servers