To MiChi 2022-03-10 22:43 采纳率: 100%
浏览 1432
已结题

利用排他思想实现导航栏内容切换时出现 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 各位友友

  • 写回答

2条回答 默认 最新

  • 关注

    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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月19日
  • 已采纳回答 3月11日
  • 修改了问题 3月10日
  • 创建了问题 3月10日

悬赏问题

  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题