js 选项卡 实现方法

1.首先写好html和css样式

2.然后用querySelectorAll()方法获取span元素和div元素,这样返回的是一个伪数组,所以要先循环给每一span绑定单击事件,然后再循环给每一个div和span添加一个空类名。当点击某选项的时候,后会先执行清空类名,然后把设置好样式的类名赋给当前点击的标签。

    <style>

        .box {
            width: 800px;
            height: 500px;
            background: #666;
            border: 1px #000 solid;
            margin: 100px auto;
        }
        .box .box_top {
            display: flex;
            background: #999;
            text-align: center;
        }

        .box .box_top span {
            flex: 1;
            display: block;
            line-height: 80px;
        }
        .bgc {
            background: #000;
            color: chartreuse;
        }
        .box .box_bottom {
            height: 420px;
            font-size: 100px;
        }
        .box .box_bottom div {
            width: 800px;
            height: 420px;
            background: #555;
            position: absolute;
            display: none;
        }
        .box .box_bottom .show {
            display: block;
        }
    </style>
</head>

<body>

    <div class="box">
        <div class="box_top">
            <span class="bgc">扫地</span>
            <span>空净</span>
            <span>电暖</span>
            <span>清洁</span>
        </div>
        <div class="box_bottom">
            <div class="show">扫地机器人</div>
            <div>空气净化器</div>
            <div>电暖器</div>
            <div>清洁器</div>
        </div>
    </div>



    <script>
        // 首先获取元素
        var allSpan = document.querySelectorAll('span')
        var allDiv = document.querySelector('.box_bottom').querySelectorAll('div')
        for (var i = 0; i < allSpan.length; i++) {

            //  外部循环,给每一span绑定单击事件
            allSpan[i].onclick = function () {

                //  内部循环
                for (var j = 0; j < allSpan.length; j++) {
                    // 给每一个span
                    allSpan[j].className = ''
                    // 给每一个div添加一个空类名
                    allDiv[j].className = ''
                    // 给每一个span添加一个自定义属性,属性值和下标对应
                    allSpan[j].setAttribute('index', j)

                }
                // 每次点击后上面的循环会先执行清空类名 
                // 然后把设置好样式的类名赋给当前点击的标签,
                this.className = 'bgc'

                // 获取当前点击的标签对应的属性值,给他*1转成number类型
                var index = this.getAttribute('index') * 1

                // 每次点击后上面的循环会先执行清空类名
                // 因为index的值和span的下标是对应的,
                // 把这个值给对应的div,然后再给这个div添加一个样式
                allDiv[index].className = 'show'
            }
        }
    </script>
</body>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值