Javascript for循环中的getElementByID(i)不工作

Javascript for循环中的getElementByID(i)不工作,javascript,Javascript,我试图在for循环中以具有特定ID的多个元素为目标。这是我的密码: var insMax = document.getElementsByClassName('instagramimg'); for (var i = 0 ; i < insMax.length; i++) { var insIMG = document.getElementById('instagramID'+i); insIMG.addEventListener('click' , fun

我试图在for循环中以具有特定ID的多个元素为目标。这是我的密码:

var insMax = document.getElementsByClassName('instagramimg');
    for (var i = 0 ; i < insMax.length; i++) {
      var insIMG = document.getElementById('instagramID'+i);
      insIMG.addEventListener('click' , function() {
        document.getElementById('instagramPopup'+i).classList.remove("hide");
      });
    }
不知怎的,这不起作用,我得到一个错误,它不能读取getElementById'instagramPopup'+I,因为它是空的。这个部件文档.getElementById'instagramID'+i工作正常。当我运行相同的代码,但使用document.getElementById'Instagrampoppup0.classList.removehide;一切正常。为什么这不起作用,尽管它应该是完全相同的两倍

在执行单击处理程序时,您的变量i将以insMax.length的值迭代到底。因此,i的值不再是您在评估“instagramPopup”+i时所期望的值


通过为每个迭代创建一个单独的i实例来解决这个问题:将var i更改为let i。

非常感谢!解决了的!