亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

原生javascript實現Tab選項卡切換功能

2019-11-20 13:26:41
字體:
來源:轉載
供稿:網友

分析個人用原生JS獲取類名元素的代碼:

復制代碼 代碼如下:

getByClassName:function(className,parent){
            var elem = [],
                node = parent != undefined&&parent.nodeType==1?parent.getElementsByTagName('*'):document.getElementsByTagName('*'),
                p = new RegExp("(^|//s)"+className+"(//s|$)");
            for(var n=0,i=node.length;n<i;n++){
                if(p.test(node[n].className)){
                    elem.push(node[n]);
                }
            }
            return elem;
        }

  parent參數是可選的,但需要先判斷它是否存在,且是節點dom元素 parent != undefined&&parent.nodeType==1 ,nodeType == 1可以判斷節點是否為dom元素,在火狐瀏覽器里面,空白也算是節點(.childnodes),用這個屬性就判斷是否為dom元素,排除空白符.

移除元素的類名:

復制代碼 代碼如下:

var cur = new RegExp(this.sCur,'g');  //this.sCur就是類名,這里是用變量保存 如:this.sCur = "cur";
           this.oTab_btn[n].className = this.oTab_btn[n].className.replace(cur,'');        

調用例子:

復制代碼 代碼如下:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
    body,p,ul,li {padding: 0;margin: 0;}
    ul {list-style: none;}   
    h3 {padding: 5px;background-color: #999;margin-bottom: 10px;}
    pre {border: 1px dotted #000;}
    .explan {padding: 10px;color: #333;line-height: 1.6;}
    .box {width: 300px;height:100px;border: 1px solid #ccc;}
    .box ul{height: 30px;line-height: 30px;}
    .box ul li {float: left;display: inline;width: 150px;text-align: center;background-color: #eee;cursor: pointer;}
    .box .tab-cur {background-color: #000;color: #fff;}
    .box p {display: none;padding: 30px;}
    /*tabB*/
    #tabB {width: 450px;}
    .box .tab-cur02 {background-color: #025023;}
    </style>
</head>
<body>
    <div class="explan">
        <strong>使用閱讀 :</strong> <br>
            {'tabBtn':'#tabA .tab-i','tabCon':'#tabA .tab-c','cur':'tab-cur'} 【必選】 <br>
         ?。?)'tabBtn':'#tabA .tab-i','tabCon':'#tabA .tab-c'  選擇器:只支持 #id .className,(ID + 空格 + 類名) 【必選】<br>
         ?。?)'cur':'tab-cur'(默認) :為切換按鈕當前狀態(類名)【必選】<br>
         ?。?)'type':'mouseover'|| 'clicl' 默認是點擊 【可選】
    </div>
    <h3>tabA</h3>
     <pre>new LGY_tab({'tabBtn':'#tabA .tab-i',
    'tabCon':'#tabA .tab-c',
    'cur':'tab-cur'
    });
         </pre>
    <div class="box" id="tabA">
        <ul>
            <li class="tab-i">btn-A</li>
            <li class="tab-i">btn-B</li>
        </ul>
        <p class="tab-c">con-A</p>
        <p class="tab-c">con-B</p>
    </div>

    <h3>tabB</h3>
     <pre>new LGY_tab({'tabBtn':'#tabB .tab-i',
    'tabCon':'#tabB .tab-k',
    'cur':'tab-cur02',
    'type':'mouseover'
    });
         </pre>
    <div class="box" id="tabB">
        <ul>
            <li class="tab-i">btn-A</li>
            <li class="tab-i">btn-B</li>
            <li class="tab-i">btn-C</li>
        </ul>
        <p class="tab-k">con-A</p>
        <p class="tab-k">con-B</p>
        <p class="tab-k">con-C</p>
    </div>
    <script type="text/javascript" src="下方的代碼段.js"></script>
    <script type="text/javascript">
    //
    new LGY_tab({'tabBtn':'#tabA .tab-i',
                 'tabCon':'#tabA .tab-c',
                 'cur':'tab-cur'
    });
    //
    new LGY_tab({'tabBtn':'#tabB .tab-i',
                 'tabCon':'#tabB .tab-k',
                 'cur':'tab-cur02',
                 'type':'mouseover'
    });
    //test
    //
    new LGY_tab({'tabBtn':'#tabB .tab-j',
                 'tabCon':'#tabB .tab-k',
                 'cur':'tab-cur02',
                 'type':'mouseover'
    });
    </script>
</body>
</html>

JS詳細代碼:

復制代碼 代碼如下:

function LGY_tab(option){
    this.oTab_btn = this.getDom(option.tabBtn);//切換點擊的元素
    this.oTab_clist = this.getDom(option.tabCon); //切換的內容
    if(!this.oTab_btn || !this.oTab_clist) return;
    this.sCur = option.cur; //激活的狀態
    this.type = option.type || 'click';
    this.nLen = this.oTab_btn.length;
    this.int();
}
LGY_tab.prototype = {
    getId:function(id){
        return document.getElementById(id);
    },
    getByClassName:function(className,parent){
        var elem = [],
            node = parent != undefined&&parent.nodeType==1?parent.getElementsByTagName('*'):document.getElementsByTagName('*'),
            p = new RegExp("(^|//s)"+className+"(//s|$)");
        for(var n=0,i=node.length;n<i;n++){
            if(p.test(node[n].className)){
                elem.push(node[n]);
            }
        }
        return elem;
    },
    getDom:function(s){
        var nodeName = s.split(' '),
            p = this.getId(nodeName[0].slice(1)),
            c = this.getByClassName(nodeName[1].slice(1),p);
        if(!p || c.length==0) return null;
        return c;
    },
    change:function(){
        var cur = new RegExp(this.sCur,'g');
        for(var n=0;n<this.nLen;n++){
            this.oTab_clist[n].style.display = 'none';
            this.oTab_btn[n].className = this.oTab_btn[n].className.replace(cur,'');
        }
    },
    int:function(){
        var that = this;
        this.oTab_btn[0].className += ' '+this.sCur;
        this.oTab_clist[0].style.display = 'block';
        for(var n=0;n<this.nLen;n++){
            this.oTab_btn[n].index = n;
            this.oTab_btn[n]['on'+this.type] = function(){
                that.change();
                that.oTab_btn[this.index].className +=' ' + that.sCur;
                that.oTab_clist[this.index].style.display = 'block';
            }
        }
    }
}

最終效果圖展示:

效果是不是很棒呢,而且兼容性也不錯,代碼也很簡潔,完全可以替代龐大的jQuery選項卡切換插件了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品香蕉国产| 国产精品久久久久久av福利软件| 久久久国产精品亚洲一区| 欧美一区深夜视频| 国产亚洲精品久久久久久| 国产精品一区二区久久久久| 欧美与黑人午夜性猛交久久久| 欧美日韩性生活视频| 亚洲男人的天堂在线播放| 亚洲第一视频网| 亚洲福利影片在线| 久久久视频在线| 国产精品久久久久久久天堂| 欧美激情视频在线| 日韩在线视频免费观看高清中文| 亚洲**2019国产| 久久视频这里只有精品| 久久全球大尺度高清视频| 国产精品免费视频久久久| 国产精品中文字幕在线| 全亚洲最色的网站在线观看| 国产欧美一区二区| 亚洲精品少妇网址| 久久精品国产亚洲精品| 日韩精品亚洲视频| 成人黄色av免费在线观看| 国产精品久久久久久久电影| 97婷婷大伊香蕉精品视频| 欧美在线不卡区| 91av在线播放| 成人国产精品av| 国产成人一区二| 91地址最新发布| 欧美精品电影在线| 中文字幕久久久| 日韩资源在线观看| 午夜精品久久久久久久久久久久| 久久这里有精品视频| 亚洲午夜av久久乱码| 成人国产精品一区二区| 国产va免费精品高清在线| 亚洲午夜未满十八勿入免费观看全集| 国产成人综合精品在线| 亚洲色图15p| 国产精品福利网| 欧美性猛交xxxx免费看漫画| 久久久国产精品视频| 国产一区二区三区在线观看视频| 日韩av片电影专区| 成人欧美一区二区三区黑人| 全亚洲最色的网站在线观看| 国产精品盗摄久久久| 欧美激情精品久久久久久蜜臀| 在线精品视频视频中文字幕| 九九视频这里只有精品| 亚洲电影免费在线观看| 国产日韩在线免费| 国产伦精品免费视频| 久久久久久久久久国产| 欧美亚洲国产精品| 亚洲精品福利视频| 国产精品福利网站| 国产精品第3页| 91福利视频网| 91精品中国老女人| 久久久久久有精品国产| 欧美日韩美女视频| www国产精品视频| 亚洲午夜小视频| 岛国av一区二区| 欧美性xxxx在线播放| 久久91超碰青草是什么| 久久伊人精品天天| 色综合伊人色综合网| 国产狼人综合免费视频| 日韩在线观看av| 青青在线视频一区二区三区| 欧美国产日韩二区| 2019中文字幕全在线观看| 欧美一区二区三区免费观看| 亚洲片国产一区一级在线观看| 国产精品免费观看在线| 福利二区91精品bt7086| 亚洲人成啪啪网站| 亚洲欧美一区二区精品久久久| 精品中文字幕久久久久久| 亚洲国产97在线精品一区| 亚洲天堂av女优| 亚洲国产成人av在线| 亚洲偷欧美偷国内偷| 亚洲欧洲一区二区三区在线观看| 亚洲电影第1页| 国产在线播放91| 成人激情视频小说免费下载| 亚洲欧美综合图区| 亚洲国产成人爱av在线播放| 成人黄色短视频在线观看| 亚洲福利视频久久| 亚洲精品电影网在线观看| 中文字幕av一区二区三区谷原希美| 欧美一级黑人aaaaaaa做受| 欧美专区在线视频| 亚洲国产精品999| 久久国产精彩视频| 中文字幕欧美日韩精品| 欧美成人一二三| 日本精品久久久久久久| 亚洲第一精品电影| 国产精品精品一区二区三区午夜版| 国产精品视频一区二区高潮| 国产亚洲激情在线| 久久久人成影片一区二区三区观看| 亚洲欧美国产一区二区三区| 久久精品一区中文字幕| 高清一区二区三区日本久| 日本成熟性欧美| 欧美日韩裸体免费视频| 亚洲日本欧美中文幕| 国产精品九九久久久久久久| 欧美国产视频一区二区| 97热在线精品视频在线观看| 欧美—级a级欧美特级ar全黄| 97精品久久久中文字幕免费| 国产裸体写真av一区二区| 成人免费网视频| 中文字幕欧美日韩va免费视频| 国产美女精品视频免费观看| 国产精品美乳一区二区免费| 国产成人精品免高潮费视频| 精品日韩美女的视频高清| 国产精品美女免费| 国内外成人免费激情在线视频网站| 成人中文字幕在线观看| 久久精品国产2020观看福利| 国产精品美女久久久久av超清| 国产日韩欧美中文在线播放| 国外成人在线直播| 自拍偷拍亚洲欧美| 精品久久久久久久久久久| 上原亚衣av一区二区三区| 国产91在线播放九色快色| 欧美黑人性生活视频| 亚洲电影免费观看高清| 国产精品99导航| 欧美精品在线免费观看| 亚洲日韩欧美视频一区| 日韩欧美在线视频观看| 在线成人免费网站| 2019中文字幕在线免费观看| 国产精品久久一区主播| 亚洲国产91精品在线观看| 九色精品美女在线| 中文欧美在线视频| 中文字幕精品一区二区精品| 亚洲色图av在线| 久久久亚洲影院你懂的| 国产精品劲爆视频| 欧美成人一区二区三区电影| 亚洲白虎美女被爆操| 国产suv精品一区二区| 欧美老妇交乱视频| 精品日韩美女的视频高清| 久久影院中文字幕| 亚洲成人久久久久|