JavaScript回调:未定义的全局变量



我对此代码有问题。

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:无法读取属性'tagname'

我无法解释为什么 uls [i] 不确定的,因为它是全局的。我知道它没有用,因为它可以通过回调中的可以访问。但是我发现这个难以理解的错误。

此外,如果我稍微修改我不再有错误

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);} );
} 

bind bind bith应该有助于您将功能重新回到所谓的相同上下文中。

function() { 
    openSlideShowModal(uls[i].tagName);
}.bind(this)

最新更新