tx6-多个tab栏切换闭包版

本文介绍了一种使用闭包技术来实现多个tab栏切换的解决方案,详细讲解了闭包在该场景下的应用和优势。
摘要由CSDN通过智能技术生成
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        ul{
            list-style: none;
        }
        .box{
            width: 350px;
            height: 300px;
            border: 1px solid #ccc;
            margin: 100px auto;
            overflow: hidden;
        }
        .mt span{
            display: inline-block;
            width: 80px;
            height: 30px;
            background-color: pink;
            line-height: 30px;
            cursor: pointer;
        }
        .mt span.current{
            background-color: purple;
        }
        .mb li{
            width: 100%;
            height: 270px;
            background-color: purple;
            display: none;
        }
        .mb li.show{
            display: none;
        }
    </style>
    <script>
        window.onload = function () {
            //要想多个盒子不互相影响,可以通过id给他们分开
            //封装tab栏切换函数
            function tab(obj){
                var target = document.getElementById(obj);
                var spans = target.getElementsByTagName("span");
                var lis = target.getElementsByTagName("li");
                for(var i=0;i<spans.length;i++){
                    // spans[i].index= i;
                    var timer = null;
                    spans[i].onmouseover = function (num){
                        return function () {
                            clearTimeout(timer);
                            timer = setTimeout(function(){
                                for(var j =0;j<spans.length;j++){
                                    spans[j].className = "";
                                    lis[j].className = "";
                                }
                                spans[num].className = "current";
                                lis[num].className = "show";
                            },300);
                        }
                    }(i);
                    spans[i].onmouseout  = function () {
                        clearTimeout(timer);
                    }
                }
            }
            tab("one");
            tab("two");
            tab("three");
        }
    </script>
</head>
<body>
    <div class="box" id="one">
        <div class="mt">
            <span class="current">新闻</span>
            <span>体育</span>
            <span>娱乐</span>
            <span>八卦</span>
        </div>
        <div class="mb">
            <ul>
                <li>新闻模块</li>
                <li>体育模块</li>
                <li>娱乐模块</li>
                <li>八卦模块</li>
            </ul>
        </div>
    </div>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值