tab切换—闭包实现

使用闭包创建tab切换,好处就是方便封装,当遇到一个页面有很多tab切换的时候,可以直接进行调用

html代码

<body>
    <div class="box">
        <ul>
            <li class="bg">列表一</li>
            <li>列表二</li>
            <li>列表三</li>
            <li>列表四</li>
            <li>列表五</li>
        </ul>
        <h1 class="show"><img src="./imgs/1.jpg" alt=""></h1>
        <h1><img src="./imgs/2.jpg" alt=""></h1>
        <h1><img src="./imgs/3.jpg" alt=""></h1>
        <h1><img src="./imgs/4.jpg" alt=""></h1>
        <h1><img src="./imgs/5.jpg" alt=""></h1>
    </div>
</body>

css代码

<style>
        *{
            margin: 0;
            padding: 0;
            list-style: none;
        }
        .box{
            width: 500px;
            /* height: 400px; */
            margin: 20px auto;
            border: 2px solid black;
        }
        .box ul{
            display: flex;
            justify-content: center;
        }
        li{
            width: 99px;
            line-height: 35px;
            text-align: center;
            background-color: rgb(171, 126, 126);
            font-size: 15px;
            font-weight: bold;
            border-right: 1px solid pink;
            cursor: pointer;
        }
        .bg{
            background-color: violet !important;
        }
        h1{
            display:none;
        }
        .show{
            display: block !important;
        }
        img{
            width: 500px;
        }
    </style>

js代码

制作
    // 获取操作对象
    let lis = document.querySelectorAll('li')
    let hs = document.querySelectorAll('h1')

    //遍历每个li,并添加点击事件
    for(var i=0; i<lis.length; i++){
        //添加点击事件并调用闭包函数
        lis[i].onclick=fn1(i)
    }

    //创建闭包
    function fn1(e){
        return function(){
            //利用排他思想清除li样式
            for(var j=0; j<lis.length; j++){
                lis[j].className=''
                hs[j].className=''
            }
            //给点击的li和对应的hs标签添加样式
            lis[e].className='bg'
            hs[e].className='show'
        }
    }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值