我的代码存在问题。
var uls = document.getElementsByClassName("gal");
for (var i = 0; i < uls.length; i++) {
// impossible to pass uls[i] as callback argument (undefined in callback)
uls[i].addEventListener("click", function() { openSlideShowModal(uls[i].tagName);} );
}
我有错误:未捕获TypeError:无法读取属性&#39; tagName&#39;未定义的
我无法解释为什么 uls [i] 未定义,因为它是全局的。我知道没有使用它,因为它可以通过回调中的 this 访问。但我偶然发现了这个难以理解的错误。
此外,如果我稍微修改我不再有错误
var uls = document.getElementsByClassName("gal");
for (var i = 0; i < uls.length; i++) {
tagName = uls[i].tagName;
// impossible to pass uls[i] as callback argument (undefined in callback)
uls[i].addEventListener("click", function() { openSlideShowModal(tagName);} );
}
答案 0 :(得分:0)
绑定它应该可以帮助你将函数恢复到调用它的相同上下文中。
function() {
openSlideShowModal(uls[i].tagName);
}.bind(this)