为什么当for循环为3时,此JavaScript始终向4发出警报?

// alert
function reOrderLayers(layerToaAlter) {
alert(layerToaAlter);
}

// prepare
var laCount;
for (laCount = 1; laCount <= 3; laCount++) {
    var la = document.getElementById("layerChanger"+laCount);
    la.addEventListener("click", function () { reOrderLayers(laCount) });
}

最佳答案

当循环结束时,i>3,要在函数调用中保留特定数字,请使用闭包:

  la.addEventListener("click", (function(count) { return function () { reOrderLayers(count) } })(laCount)  );

10-04 15:44