从使用 id 更改为 class 以从 6 张图像中的任意一张打开模式

Change from using id to class to open a modal from any of 6 images

我连续有 6 张不同的图像,它们是从一组包含缩略图和高分辨率图像(与缩略图相同)的对象中随机挑选的。我希望能够单击任何缩略图并打开带有全屏高分辨率图像的模式。由于我使用的是 id,它只适用于六张图片中的第一张。当我尝试将其更改为 class 时,它不起作用。我想将其更改为 class,因为据我所知,它适用于所有六张图片。我的阵列中有 96 张图像、48 张缩略图和 48 张高分辨率图像。我将提供此数组的删节示例。我还将提供 HTML、JavaScript 和 CSS(均已删节)。

我试过使用 .avengerpic 和 avengerpic(class 的名称),但都不起作用。我想连续显示 6 个缩略图,并能够单击其中任何一个并打开一个带有较大高分辨率图像的模式。

        let picArray = [
             {thumbnail: "https://rcabrerapics.s3.us-east- 
             2.amazonaws.com/assets/avengers_1.jpg", image: 
             "https://rcabrerapics.s3.us-east- 
             2.amazonaws.com/assets/avengers_large_1.jpg"},
             {thumbnail: "https://rcabrerapics.s3.us-east- 
             2.amazonaws.com/assets/avengers_2.jpg", image: 
             "https://rcabrerapics.s3.us-east- 
             2.amazonaws.com/assets/avengers_large_2.jpg"},
             {thumbnail: "https://rcabrerapics.s3.us-east- 
             2.amazonaws.com/assets/avengers_3.jpg", image: 
             "https://rcabrerapics.s3.us-east- 
             2.amazonaws.com/assets/avengers_large_3.jpg"},
             {thumbnail: "https://rcabrerapics.s3.us-east- 
             2.amazonaws.com/assets/avengers_4.jpg", image: 
             "https://rcabrerapics.s3.us-east- 
             2.amazonaws.com/assets/avengers_large_4.jpg"},
             {thumbnail: "https://rcabrerapics.s3.us-east- 
             2.amazonaws.com/assets/avengers_5.jpg", image: 
             "https://rcabrerapics.s3.us-east- 
             2.amazonaws.com/assets/avengers_large_5.jpg"},
             {thumbnail: "https://rcabrerapics.s3.us-east- 
             2.amazonaws.com/assets/avengers_6.jpg", image: 
             "https://rcabrerapics.s3.us-east- 
             2.amazonaws.com/assets/avengers_large_6.jpg"},
             {thumbnail: "https://rcabrerapics.s3.us-east- 
             2.amazonaws.com/assets/avengers_7.jpg", image: 
             "https://rcabrerapics.s3.us-east- 
             2.amazonaws.com/assets/avengers_large_7.jpg"}]

    let moviePics = function() {
      document.querySelectorAll('.avengerPic').forEach(function(e) {
        const randomPic = Math.floor((Math.random() * picArray.length));
        e.src = picArray[randomPic].thumbnail;
      });
    }

    moviePics();

    let modal = document.getElementById("myModal");

    let img = document.getElementById("myImg");
    let modalImg = document.getElementById("img01");
    let captionText = document.getElementById("caption");
    img.onclick = function() {
      modal.style.display = "block";
      modalImg.src = this.src;
      captionText.innerHTML = this.alt;
    }

    let span = document.getElementsByClassName("close")[0];

    span.onclick = function() {
      modal.style.display = "none";
    }

    let modal = document.getElementById("myModal");

    let img = document.getElementById("myImg");
    let modalImg = document.getElementById("img01");
    let captionText = document.getElementById("caption");
    img.onclick = function() {
      modal.style.display = "block";
      modalImg.src = this.src;
      captionText.innerHTML = this.alt;
    }

    let span = document.getElementsByClassName("close")[0];

    span.onclick = function() {
      modal.style.display = "none";
    }
    <div class="container">
        <div class="pics">
            <table>
                <tr>
                    <div class="photosTitle">
                        <h3>Photos</h3>
                    </div>
                </tr>
                <tr>
                    <i class="arrowleft" onclick="moviePics()"></i>

                    <img class="avengerPic" id="myImg" src="https://rcabrerapics.s3.us-east-2.amazonaws.com/assets/avengers_large_5.jpg" width="99" height="99">
                    <div id="myModal" class="modal">
                        <span class="close">&times;</span>
                        <img class="modal-content" id="img01">
                        <div id="caption"></div>
                    </div>

                    <img class="avengerPic" id="myImg" src="https://rcabrerapics.s3.us-east-2.amazonaws.com/assets/avengers_large_5.jpg" width="99" height="99">
                    <div id="myModal" class="modal">
                        <span class="close">&times;</span>
                        <img class="modal-content" id="img01">
                        <div id="caption"></div>
                    </div>
                </tr>
            </table>
        </div>
    </div>
    .container {
      display: flex;
      align-items: baseline;
      flex-direction: row;
      flex-wrap: nowrap;
      vertical-align: middle;
      margin: 5px 15px;
    }

    .pics img {
      padding: 2px;
      box-sizing: border-box;
      cursor:pointer;
    }

    .modal {
      display: none;
      position: fixed; /* doesn't move */
      z-index: 1; /* on top */
      padding-top: 50px;
      left: 0;
      top: 0;
      width: 100%;
      height: 100%;
      overflow: auto;
      background-color: rgb(0,0,0);
      /* background-color: rgb(0,0,0,0.75); */
    }

    .modal-content {
      margin: auto;
      /* position: fixed; */
      display: block;
      width: 85%;
      max-width: 1000;
      max-height: 520;
    }

    .caption {
      margin: auto;
      display: block;
      width: 80%;
      max-width: 700px;
      text-align: center;
      color: #ccc;
      padding: 10px 0;
      height: 150px;
    }

    .close {
      position: absolute;
      top: 15px;
      right: 35px;
      color: rgb(180, 180, 180);
      font-size: 40px;
      /* font-weight: bold; */
      transition: 0.3s;
    }
let moviePics = function() {
    document.querySelectorAll('.avengerPic').forEach(function(e) {
        const randomPic = Math.floor((Math.random() * picArray.length));
        e.src = picArray[randomPic].thumbnail;
    });
}

moviePics();


let imgs= document.querySelectorAll(".avengerPic");    
let closeBtns = document.querySelectorAll(".close");
for (var i=0; i<imgs.length; i++){
    imgs[i].addEventListener('click', function(){
        let thumbSrc = this.src;
        let bigImgSrc;
        for(var j=0; j<picArray.length; j++){
           if (thumbSrc == picArray[j].thumbnail){
               bigImgSrc = picArray[j].image
           }
        }    
        this.nextElementSibling.style.display = "block";
        this.nextElementSibling.children[1].src = bigImgSrc;
        this.nextElementSibling.children[2].innerHTML = this.alt;
     })
 }
for (var i=0; i<closeBtns.length; i++){
    closeBtns[i].addEventListener('click', function(){
        this.parentElement.style.display = "none";    
    })
}