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)); }