使用jsavascript中的闭包解决此问题的最佳方法是什么?
这是我有一个简单的问题:
10次跨度和onclick事件(我希望每次点击都有阻止警报的数量):
var spans = document.getElementsByTagName('span');
function addEvents(divs) {
for(var i=0; i < divs.length; i++) {
divs[i].innerHTML = i;
divs[i].onclick = function() { alert(i) }
}
}
addEvents(spans);
答案 0 :(得分:1)
将其包裹在一个自动执行的闭包中:
divs[i].onclick = (function(i) {
return function() {
alert(i);
};
})(i);
为了缩短它:将其定义为回调:
var callback = function(i) {
return function() { alert(i); };
};
divs[i].onclick = callback(i);