Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何捕获迭代数组的索引(Javascript)_Javascript_Arrays_Indexing - Fatal编程技术网

如何捕获迭代数组的索引(Javascript)

如何捕获迭代数组的索引(Javascript),javascript,arrays,indexing,Javascript,Arrays,Indexing,我试图在数组每次迭代时在数组中获取索引,但我只获取该数组的长度。我该怎么办 我在HTML代码中创建了一个outofother div,其中每个div都包含一张带有小图标的照片,用于打开一个模态,因此我希望每次单击图像时,模态外部的图像源都会发生变化,并获取该索引的值(在包含小图像的数组中)。非常感谢您的帮助:) 这是我的密码: for (var i = 0; i < zoom.length; i++) { zoom[i].addEventListener('click', () =

我试图在数组每次迭代时在数组中获取索引,但我只获取该数组的长度。我该怎么办

我在HTML代码中创建了一个outofother div,其中每个div都包含一张带有小图标的照片,用于打开一个模态,因此我希望每次单击图像时,模态外部的图像源都会发生变化,并获取该索引的值(在包含小图像的数组中)。非常感谢您的帮助:) 这是我的密码:

for (var i = 0; i < zoom.length; i++)
{
    zoom[i].addEventListener('click', () => 
    {
        openModal();
    })
}

function openModal()
{
        j = i;
        image.src = './img/screenshotSite' + j + '.png';
        modal.style.display = 'block';
        document.getElementsByTagName('*')[0].style.overflow = 'hidden';

}
for(变量i=0;i
{
openModal();
})
}
函数openModal()
{
j=i;
image.src='./img/screenshotSite'+j+'.png';
modal.style.display='block';
document.getElementsByTagName('*')[0].style.overflow='hidden';
}

您可以使用
forEach
在数组上循环。当作为参数传递给
openmodel
时,这确保了索引的正确值:

//我想这是一个HTMLCollection,所以需要将其转换为数组
[…缩放]
.forEach((元素,索引)=>
元素。addEventListener('单击',()=>OpenModel(索引))
);
函数OpenModel(索引)
{
image.src='./img/screenshotSite'+index+'.png';
modal.style.display='block';
document.getElementsByTagName('*')[0].style.overflow='hidden';
}
只需将(var i=0…与(let i=0…
let
var
范围方面存在差异。

这方面的更多信息。

首先,我强烈建议您使用
let
const
来声明变量,而不是
var
。其次,将
I
的值传递给
openModal
函数。第三,请同时声明
j
,您当前不是declarin它可能会工作,但这是一种糟糕的编码实践。1.您正在循环中调用函数,因此只需更改()并在引用该函数之前加上return和2)使用
this
引用正在单击的特定html元素。此外,调用openModel处理程序时,您没有访问for循环中的本地索引…非常感谢您我在您的帮助下通过一些研究了解了如何转换数组,然后您的方法更易于使用,非常感谢。我成功了因为索引从0开始,所以在重命名我的照片时使用了d:)不客气!;)谢谢,注意到了;)