有个未采纳的「潇潇雨歇」的答案,也有用,只是我现在还不知道let的具体用法。在此表示歉意,我也好想采纳两个。
结果肯定是
click button1 alert(3)
click button2 alert(3)
怎么修改代码使得
click button1 alert(1)
click button2 alert(2)
感觉这个问题跟settimeout的闭包经典问题有点像,但是我又想不到什么解决办法。
求指点。
有个未采纳的「潇潇雨歇」的答案,也有用,只是我现在还不知道let的具体用法。在此表示歉意,我也好想采纳两个。
结果肯定是
click button1 alert(3)
click button2 alert(3)
怎么修改代码使得
click button1 alert(1)
click button2 alert(2)
感觉这个问题跟settimeout的闭包经典问题有点像,但是我又想不到什么解决办法。
求指点。
将var 改为 let 即可
window.onload = function () {
for (let i = 1; i < 3; i++) {
document.getElementById('myButton' + i)
.addEventListener('click', () => {
myClick(i)
})
}
}
for(var i=0;i<10;i++){
(function(i){
document.getElementById('myButton' + i).addEventListener('click',myclick(i))
})(i)
}
ES6的话,可以直接用
for(let i=0;i<10;i++){
document.getElementById('myButton' + i).addEventListener('click',myclick(i))
}
10 回答11.2k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
第二个参数传myclick(i)