Esto viene de este post
Porque no puedo modificar valores de onMouseOut onMouseOver?
El caso es que no se puede asignar una función de una forma lógica como por ejemplo:
Código HTML:
document.getElementById("arrowa1").onmouseout = "alert('test')";
Código HTML:
document.getElementById("arrowa1").onmouseout = function() {alert('test')};
El problema es que si bien function(){alert('test')}; funciona, si la programación exige pasar una variable dentro del alert esta se pierde o funciona de una forma no esperada, por ejemplo:
Código HTML:
function select_this(id) { var li,file; for(li=1;li<6;li++) { file="square"; if (li==1) file="arrow_left"; if (li==5) file="arrow_right"; document.getElementById("arrow"+li).src="images/"+file+"_blue.png"; document.getElementById("arrowa"+li).onmouseout=function() {alert("valor="+li)}; } }
document.getElementById("arrowa"+li).onmouseout
va tomandos los valores de alert("valor="+li)
sin embargo devuelve 6 que es el valor final de li al terminar el bucle.
Saludos y Gracias
PD: no necesito corregir este codigo, solo entender el porque.