Я решил проблему, и это окончательное решение:
meraj = function meraj (imgs, butns, i) {
imgs[i].style.opacity = "0.1";
butns[i].style.visibility = "visible";
}
merajo = function merajo (imgs, butns, i) {
imgs[i].style.opacity = "1";
butns[i].style.visibility = "hidden";
}
function addListenerWithArgs(elem, evt, func, var1, var2, var3){
var f = function(ff, v1, v2, v3){
return (function (){
ff(v1, v2, v3);
});
}(func, var1, var2, var3);
elem.addEventListener(evt, f);
return f;
}
for (i = 0; i < boxes.length; i++) {
var storeFunc = addListenerWithArgs(boxes[i], "mouseover", meraj, imgs, butns, i);
var storeFunc = addListenerWithArgs(boxes[i], "mouseout", merajo, imgs, butns, i);
}