1.实例一:
var nodes = document.getElementsByTagName('button');
for (var i = 0; i < nodes.length; i++) {
nodes[i].addEventListener('click', function() {
console.log('You clicked element #' + i);
});
}
为了解决闭包所带来的影响,输出预期的效果。有两种解决方案。
方法一:使用IIFE
var nodes = document.getElementsByTagName('button');
for (var i = 0; i < nodes.length; i++) {
nodes[i].addEventListener('click', (function(num) {
console.log('You clicked element #' + num);
})(i));
}
方法二:使用外部函数
function handler(i){
console.log('You clicked element #' + i);
}
var nodes = document.getElementsByTagName('button');
for (var i = 0; i < nodes.length; i++) {
nodes[i].addEventListener('click',handler(i));
}