html
<button>测试1</button> <button>测试2</button> <button>测试3</button>
js
//错误 var btns = document.getElementsByTagName('button') for (var i = 0; i < btns.length; i++) { btns[i].onclick = function() {//事件回调函数:必须等到主线程的任务执行完毕,才能执行事件回调函数。 console.log(this) } } //正确1 for (var i = 0; i < btns.length; i++) { btns[i].index = i; //给每个按钮绑定一个自定义属性 index ,存住每个i btns[i].onclick = function() { console.log(this.index) } } //正确2:闭包解决 for (var i = 0; i < btns.length; i++) { //立即执行函数 ;(function(i) { //此处i是形参 btns[i].onclick = function() { console.log(i) } })(i) //此处i是实参 }
来源:https://www.cnblogs.com/maizilili/p/12372153.html