以编程方式将单个事件侦听器添加到多个 div 会导致相同的函数出现在所有受影响的 div 上
Programmatically adding individual event listeners to multiple divs results in the same function appearing on all affected divs
for (i = 0;i < cnt;i++) {
var thumb=thumbnails[i];
var id=thumb.id;
thumb.addEventListener('click', function () {
location.href="SomeWebPage.html?id=" + id;
}, false);
}
上面的代码导致所有缩略图具有相同的最后 id
分配,而不是基于个人 div
id
的个人缩略图 id
分配。我的期望是每个缩略图 div
都将分配一个事件处理程序,该事件处理程序在正在定义的 location.href
url 中引用其特定的 id
。相反,所有事件处理程序都具有相同的 url,仅引用最后一个 dev
id
.
使用let代替var
let id=thumb.id;
var 是全局的东西,这就是为什么只有最后一个值保留在箭头函数内存中的原因
for (i = 0;i < cnt;i++) {
var thumb=thumbnails[i];
var id=thumb.id;
thumb.addEventListener('click', function () {
location.href="SomeWebPage.html?id=" + id;
}, false);
}
上面的代码导致所有缩略图具有相同的最后 id
分配,而不是基于个人 div
id
的个人缩略图 id
分配。我的期望是每个缩略图 div
都将分配一个事件处理程序,该事件处理程序在正在定义的 location.href
url 中引用其特定的 id
。相反,所有事件处理程序都具有相同的 url,仅引用最后一个 dev
id
.
使用let代替var
let id=thumb.id;
var 是全局的东西,这就是为什么只有最后一个值保留在箭头函数内存中的原因