使用自定义属性实现tab栏切换

Posted by VickyWu on August 30, 2016

思路

让tab栏的a连接与下面的section产生关联,a连接的自定义属性data-count=section的id

data自定义属性的使用

<body>
<nav>
    <a href="javascript:;" data-count="local">国内新闻</a>
    <a href="javascript:;" data-count="globle">国际新闻</a>
</nav>
<section id="local">
    <ol>
        <li>禽流感</li>
        <li>南方大旱</li>
    </ol>
</section>
<section id="globle">
    <ol>
        <li>南方大旱</li>
        <li>禽流感</li>
    </ol>
</section>
<script>
    (function (index) {
        var tabs = document.querySelectorAll("nav > a"),
            counts = document.querySelectorAll("section"),
            i = 0;
            len = tabs.length;
        for (; i < len; i++) {
            var tab = tabs[i];
            //排他
            tab.classList.remove("active");//h5的dom操作
            //页面初始化。给tab栏第一个连接加样式,使其section显示
            if (index === i) {
                tab.classList.add("active");//给tab栏的a连接添加样式
                document.querySelector("#" + tab.dataset["count"]).style.display = "block";//让tab栏第一个连接下的section显示
            }
            ///点击时的样式切换
            tab.onclick = function () {
                if (this.classList.contains("active")) {
                    return false;//点击第一个无变化
                }
                //排他
                for (var j = 0; j < len; j++) {
                    tabs[j].classList.remove("active");//清除所有active
                }
                this.classList.add("active");
                for (var k = 0; k < counts.length; k++) {
                    counts[k].style.display = "none";//让所有section隐藏
                }
                document.querySelector("#" + this.dataset["count"]).style.display = "block";//让tab中点击的a连接下的section显示
            }
        }
    })(0)
</script>
</body>