0

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

JSFiddle 链接

4

1 回答 1

1

将其包装在一个自动执行的闭包中:

divs[i].onclick = (function(i) {
    return function() {
        alert(i);
    };
})(i);

为了让它更短:将其定义为回调:

var callback = function(i) {
    return function() { alert(i); };
};

divs[i].onclick = callback(i);
于 2013-03-28T15:24:01.103 回答