Вам необходимо сохранить значение i
в новом контексте выполнения.
Поместите код, который назначает обработчики в именованную функцию, и вызовите его в цикле, передав в качестве аргумента i
.
Поместите эту функцию перед for
loop:
function setupMouseOverOut( el, i ){
el.onmouseover = function() {
gBarHighlight(this, this.gData[i][1], this.gData[i][2]);
};
el.onmouseout = function() {
gBarUnHighlight(this, this.gData[i][1], this.gData[i][2]);
};
}
... затем вызовите его в цикле for
:
setupMouseOverOut( div, i );
Таким образом, значение i
, которое вы передали из цикла for
, сохраняется в новом контексте выполнения вызова функции setupMouseOverOut()
, и новые функции, которые вы устанавливаете как обработчики, будут ссылаться на эту локальную переменную .