<input type="button" id="btn" value="按钮1" /> <input type="button" id="btn" value="按钮2" /> <input type="button" id="btn" value="按钮3" /> <input type="button" id="btn" value="按钮4" /> <script> var btn=document.getElementsByTagName('input'); for(var i=0;i<btn.length;i++){ btn[i].onclick=function(){ alert(i);//输出4 4 4 4 } }是什么原因造成for循环体输出都是循环后的值
2 回答
已采纳
橋本奈奈未
TA贡献436条经验 获得超108个赞
//ES5 的写法
for(var i=0;i<btn.length;i++){
(function(i){
btn[i].onclick=function(){
alert(i);
}
})(i);
}
//ES6中可以不这么做,使用let / const 也可以达到块作用域的目的
//ES6的写法
for(let i=0;i<btn.length;i++){
btn[i].onclick=function(){
alert(i);
}
}添加回答
举报
0/150
提交
取消
