利用排他思想实现导航栏内容切换时出现 Uncaught TypeError: Cannot read properties of undefined (reading 'style')


<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style type="text/css">
            .tab_list {
                width: 900px;
                height: 40px;
                background-color: #CCCCCC;
                border-bottom: 1px solid orangered;
            }

            .tab_con {
                font-size: 14px;
                margin-top: 10px;
            }

            .tab_list li {
                width: 130px;
                height: 40px;
                font-size: 13px;
                list-style: none;
                line-height: 40px;
                margin-left: 30px;
                float: left;
                text-align: center;
                border: none;
            }

            .goods {
                background-color: orangered;
                color: #FFFFFF;
            }

            .item {
                display: none;
            }
        </style>
    </head>
    <body>
        <div id="tab">
            <div class="tab_list">
                <ul>
                    <li class="goods">商品介绍</li>
                    <li>规格与包装</li>
                    <li>售后与保障</li>
                    <li>商品评价(4999+)</li>
                    <li>手机社区</li>
                </ul>
            </div>
            <div class="tab_con">
                <div class="item" style="display: block;">
                    商品介绍模块
                </div>
                <div class="item">
                    规格与包装模块
                </div>
                <div class="item">
                    售后与保障模块
                </div>
                <div class="item">
                    商品评价(4999+)模块
                </div>
                <div class="item">
                    手机社区模块
                </div>
            </div>
        </div>
        <script type="text/javascript">
            var lis = document.querySelector('.tab_list').querySelectorAll('li');
            var item = document.querySelectorAll('item');
            // console.log(lis);        
            for (var i = 0; i < lis.length; i++) {
                lis[i].setAttribute('index', i);
                lis[i].onclick = function() {
                    for (var i = 0; i < lis.length; i++) {
                        lis[i].className = '';
                    }
                    this.className = 'goods';
                    var index = this.getAttribute('index');
                    console.log(index);
                    for (var i = 0; i < lis.length; i++) {
                        item[index].style.display = 'none';  //报错代码
                    }
                    item[index].style.display = 'block';  //报错代码
                }
            }
        </script>
    </body>
</html>

                }
            }
        </script>
    </body>
</html>

将var变为let试过了,头发都挠秃了,ball ball 各位友友

var item = document.querySelectorAll('item'); 字符串中item 前面少了'.'
改成
var item = document.querySelectorAll('.item');

for 中 item[index].style.display = 'none';
index改成i
item[i].style.display = 'none';

你题目的解答代码如下:

            var lis = document.querySelector('.tab_list').querySelectorAll('li');
            var item = document.querySelectorAll('.item'); //字符串中item 前面少了'.'
            // console.log(lis);        
            for (var i = 0; i < lis.length; i++) {
                lis[i].setAttribute('index', i);
                lis[i].onclick = function() {
                    for (var i = 0; i < lis.length; i++) {
                        lis[i].className = '';
                    }
                    this.className = 'goods';
                    var index = this.getAttribute('index');
                    console.log(index);
                    for (var i = 0; i < lis.length; i++) {
                        item[i].style.display = 'none';  //index改成i
                    }
                    item[index].style.display = 'block';  //报错代码
                }
            }

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632