今天遇到了利用循環給元素綁定事件的問題,相信大家應該都遇到過這個問題。我的代碼var hint = ["必填,長度為4-18個字符", "", "再次輸入相同密碼", "格式: [email protected]", ""]; 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))}
為什么閉包可以解決js中循環綁定事件的問題?
侃侃爾雅
2018-09-20 10:10:19