1. 程式人生 > >JavaScript及jQuery實現tab標籤頁切換

JavaScript及jQuery實現tab標籤頁切換

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <script type="text/javascript" src="js/jquery.min.js"></script>
    </head>
    <body>
    <style>
    .box{
        width: 215px;
        height: 150px;
    }
    .tab{
        width: 215px;
        height: 50px;
    }    
    span{
        float: left;
        height: 50px;
        padding: 0 30px;
        border: 1px solid #333333;
        text-align: center;
        cursor: pointer;
    }
    .content div{
        height: 100px;
        width: 212px;
        border: 1px solid #333333;
    }
    .tab_active{
        background-color: #FF0000;
    }
    .show{
        background-color: #c9c9c9;
        display: block;
    }
    </style>
    <div class="box">
        <div class="tab">
            <span class="tab_active">1</span>
            <span>2</span>
            <span>3</span>
        </div>
        <div class="content">
            <div class="show">content1</div>
            <div class="show" style="display: none;">content2</div>
            <div class="show" style="display: none;">content3</div>
        </div>
    </div>
    <script>
//jquery
//        $(function(){
//            $('span').click(function(){
//                $(this).addClass('tab_active').siblings().removeClass('tab_active');
//                var i = $(this).index();
//                $('.content div').eq(i).css('display','block').addClass('show').siblings().css('display','none');
//            });
//        });

//JavaScript
    var tabs = document.getElementsByTagName('span');
    var contents = document.getElementsByClassName('content')[0];
    var aaa= contents.getElementsByTagName('div');
    for(var i = 0, len1 =tabs.length; i<len1; i++){
        tabs[i].index = i;
        tabs[i].onclick = function(){
            for(var j = 0; j < tabs.length; j++){
                tabs[j].className = "";
                aaa[j].style.display = "none";
            }
            tabs[this.index].className = "tab_active";
            aaa[this.index].style.display = "block";
        }
    }
    
    </script>
    </body>
</html>

JavaScript中第二行獲取ClassName時得到的是一個list,無論擁有這個class的元素是一個還是多個,均會是一個list,而在接下來獲取contents的子元素時,js不知道獲取的list中的哪個,所以需要在獲取到classname為“content”的元素時加了[0]。所以最好使用id來標記元素,那樣不需考慮獲取的元素是不是list。

jQuery在使用中能極大的減少程式碼量,但是需要理解var i = $(this).index();這句程式碼,它的作用是獲取被點選的標籤的索引值,這個索引值先儲存到i中,在之後的顯示標籤時,能確定相對應的內容。

在content中,如果每個div的狀態樣式都是一樣的,就可以設為同樣的class,不需再js或jQuery中單獨設定它。