js 实现列表栏 与内容联动点击(排他思想)

实现列表栏 与内容联动点击

设置样式列表栏与内容区域

<!DOCTYPE html>
<html lang="en">

<head>
    <style>
        * {
            padding: 0;
            margin: 0;
            text-align: center;
        }

        ul {
            list-style: none;
        }

        li {
            width: 150px;
            height: 30px;
            line-height: 30px;
            /* border: 1px solid; */
        }

        /* 默认显示列表一显示背景 设置一个背景样式的类*/
        .libgc {
            background-color: skyblue;
            color: azure;
        }

        .f,
        .f1 {
            float: left;
        }

        .c {
            width: 200px;
            height: 90px;
            line-height: 90px;
            background-color: #a6d0ca;
            color: #000;
            /* 所有div隐藏 */
            display: none;
        }

        /* 默认显示列表1内容区域显示 */
        .c:first-of-type {
            display: block;
        }
    </style>
</head>

<body>
    <div class="content">
        <div class="f1">
            <ul>
                <li class="libgc">列表1</li>
                <li>列表2</li>
                <li>列表3</li>
            </ul>
        </div>

        <div class="f">
            <div class="c">列表1内容模块</div>
            <div class="c">列表2内容模块</div>
            <div class="c">列表3内容模块</div>
        </div>
    </div>

</body>

</html>

 静态页面

 js 实现点击列表区域联动变换内容区域

1.列表区域的点击样式(排他思想)

    <script>
        // 获取需要实现样式的列表元素
        var li = document.querySelectorAll('li')

        // 对此组元素进行遍历循环
        for (let i = 0; i < li.length; i++) {
            // 设置一个触发机制 例如鼠标点击
            li[i].onclick = function () {
                // 循环的为所有li样式进行清除(去除背景类)
                for (let i = 0; i < li.length; i++) {
                    li[i].className = ''
                }
                // 对自己设置样式(添加背景类)
                this.className = 'libgc'
            }
        }
    </script>

实现效果

此时点击列表区域点击样式触发,内容区域未联动触发

2.点击列表 联动内容区域改变

   <script>
        // 获取需要实现样式的列表元素
        var li = document.querySelectorAll('li')

        // 补充
        var div = document.querySelectorAll('.c')

        // 对此组元素进行遍历循环
        for (let i = 0; i < li.length; i++) {
            // 设置一个触发机制 例如鼠标点击
            li[i].onclick = function () {
                // 循环的为所有li样式进行清除(去除背景类)
                for (let i = 0; i < li.length; i++) {
                    li[i].className = ''
                }
                // 对自己设置样式(添加背景类)
                this.className = 'libgc'


                // 补充
                // 给所有li设置一个自定义属性index
                li[i].setAttribute('index', i)
                // 获取到此当前元素的index
                var index = this.getAttribute('index')

                // 遍历循环内容区域的div
                // 第二个排他思想
                for (let j = 0; j < div.length; j++) {
                    // 所有div隐藏
                    div[j].style.display = 'none'
                }
                // 利用index将两个区域链接起来,使当前的div显示
                div[index].style.display = 'block'
            }
        }
    </script>

实现效果

点击列表实现内容区域同样改变

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值