今天遇到了利用循环给元素绑定事件的问题,相信大家应该都遇到过这个问题。
我的代码
var hint = ["必填,长度为4-18个字符", "", "再次输入相同密码", "格式: example@github.com", ""];
var inputIDs = ["ip-name", "ip-pwd", "ip-pwd-cfm", "ip-email", "ip-phone"];
for (var i = 0; i<hint.length; i++) {
document.getElementById(inputIDs[i]).addEventListener("focus", function (e) {
var tar = e.target.parentElement.getElementsByClassName("alert")[0];
tar.innerHTML = hint[i];
});
}
下面这段代码用闭包来解决的,但是我没看懂,为什么这样调用不会调用到循环结束时i的值了呢?
没有理解这里闭包的用法,有哪位可以解释一下吗?
for (var i = 0; i < 5; i++) {
var a = function(v){
return function(){
console.log(v)
}
}
document.body.addEventListener('click',a(i))
}
开心每一天1111
相关分类