I believe everyone use javascript would run into this problem but because I don't really know how closure works I can't solve it myself.
var hint = ["str", "str", "str", "str", "str"];
var inputIDs = ["ip-name", "ip-pwd", "ip-pwd-cfm", "ip-email", "ip-phone"];
var errorMsg = [];
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 want to bind focus event to every element iteratively.
But if I use the code above, every time the function is executed, i
is 5.
I think I should use closure here to get the value of i
correct as I wanted.
Can anyone give a suggestion?