Bei瓜 2022-05-09 11:46 采纳率: 80%
浏览 96
已结题

通过for循环来使用js的点击事件展示图片,结果点击一次是循环所有图片,无法展示单张

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
<head>
    <meta charset="utf-8">
    <title>垂直选项栏</title>
    <style>
            *{
                margin: 0;
                padding: 0;
            }
            li{
                list-style: none;
            }
            body{
                background-color: #f7f7f7;
            }
            .box{
                width: 500px;
                height: 400px;
                background-color: white;
                margin: 100px auto;
                border-radius: 8px;
                overflow: hidden;
                box-shadow: 5px 5px 10px gray;
            }
            .box .left{
                position: relative;
                width: 20%;
                height: 100%;
                float: left;
            }
            .scroll{
                position: absolute;
                top: 0;
                left: 96px;
                width: 4px;
                height: 100px;
                background-color: orange;
                border-radius: 10px;
                transition: all .2s ease-in-out;
            }
            .box .right{
                width: 80%;
                height: 100%;
                float: right;
            }
            .box .left ul li{
                cursor: pointer;
                text-align: center;
                line-height: 100px;
                width: 100px;
                height: 100px;
                font-size: 20px;
                border-bottom:2px solid gray ;
                box-sizing: border-box;
                box-shadow: 5px 5px 10px gray;
            }
            .box .right ul li{
                position: relative;
                width:0px ;
                height: 0px;
                text-align: center;
                line-height: 600px;
                overflow: hidden;
                box-shadow: 5px 3px 5px gray;
                transition: all .2s; 
                z-index: 0;
            }
            .box .right ul li p{
                position: absolute;
                display: inline-block;
                top: 20px;
                right: 180px;
            }
        </style>

</head>
<body>
    <div class="box">
        <div class="left">
            <div class="scroll"></div>
            <ul>
                <li>点赞</li>
                <li>投币</li>
                <li>评论</li>
                <li>转发</li>
            </ul>
        </div>
        <div class="right">
            <ul>
                <li><img src="./img/点赞.png" alt="">
                <p>DianZan</p>
                </li>
                <li><img src="./img/娱乐宝.png" alt="">
                <p>TouBi</p></li>
                <li><img src="./img/评论.png" alt="">
                <p>PingLun</p></li>
                <li><img src="./img/编辑.png" alt="">
                <p>ZhuanFa</p></li>
            </ul>
        </div>
    </div>
    <script>
        var left = document.querySelectorAll('.left ul li')
        var right = document.querySelectorAll('.right ul li')
        var scroll = document.querySelector('.scroll')
        for(let i = 0 ; i<left.length ; i++){
            left[i].addEventListener('click',function(){
                var len = i * 100 +'px'
                scroll.style.transform = 'translateY('+len+')'
                for(var i = 0 ; i<right.length ; i++){
                    right[i].style.width = 400+'px'
                    right[i].style.height = 500 + 'px'
                }
            })
            for(let i = 0 ; i < left.length ; i++){
            left[i].addEventListener('mouseout',function(){
                for(let i = 0 ; i < right.length ; i++){
                    if(right[i].style.width == 400+'px'&&right[i].style.height == 500 + 'px'){
                        right[i].style.width = 0 +'px'
                        right[i].style.height = 0 + 'px'
                    }
                }
            })
            }
        }
    </script>
</body>

img

img

img

img


//这是代码中的图片,都是从阿里那个素材网站找的
js还没有学完,代码可能有些乱,多多包涵,谢谢各位

运行结果及报错内容

我每点击不同事件,总会出来第一张图片,不会出现第二张图片

我的解答思路和尝试过的方法

目前没有想到

我想要达到的结果

点击每个事件出现对应图片

  • 写回答

1条回答 默认 最新

  • 溪风沐雪 2022-05-09 11:59
    关注

    先说你代码里的一个错误:

    img


    不能在多层循环里用同一个变量,你不能就用i啊,换换j,m、n什么的

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月9日
  • 创建了问题 5月9日

悬赏问题

  • ¥300 寻抓云闪付tn组成网页付款链接
  • ¥15 请问Ubuntu要怎么安装chrome呀?
  • ¥15 视频编码 十六进制问题
  • ¥15 Xsheii7我安装这个文件的时候跳出来另一个文件已锁定文件的无一部分进程无法访问。这个该怎么解决
  • ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
  • ¥15 FileNotFoundError 解决方案
  • ¥15 uniapp实现如下图的图表功能
  • ¥15 u-subsection如何修改相邻两个节点样式
  • ¥30 vs2010开发 WFP(windows filtering platform)
  • ¥15 服务端控制goose报文控制块的发布问题