<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
提交
取消