我试图根据乘数来改变图像大小。该函数在onmouseover事件中被调用,并在onmouseout中恢复以前的imagen大小。函数内部的变量值很差 - Javascript
function cambiar_img_ampliando(imagen, inout, porcentaje)
{
//Description of arguments:
//(image element, onmouseover or onmouseout, % of size increase)
var multiplicador = porcentaje/100; //Multiplier
var alto = imagen.offsetHeight;
var ancho = imagen.offsetWidth;
if (inout==1) //onmouseover
{
var nuevo_alto = alto+(alto*multiplicador);
var nuevo_ancho = ancho+(ancho*multiplicador);
//Change the image size
imagen.style.height = nuevo_alto+"px";
imagen.style.width = nuevo_ancho+"px";
//Adjust image position > To keep it center
var top = (alto*multiplicador)/2;
var left = (ancho*multiplicador)/2;
imagen.style.top="-"+top+"px";
imagen.style.left="-"+left+"px";
}
if (inout==0) //onmouseout
{
//Recover the original image size
imagen.style.height = alto+"px";
imagen.style.width = ancho+"px";
//Replace image
imagen.style.top="0px";
imagen.style.left="0px";
}
}
的问题发生在inout==0
部分(当的onmouseout与inout
参数0
值调用该函数): alto
和ancho
变量不正确地恢复imagen画质的原始大小值。它似乎得到变量nuevo_alto
和nuevo_ancho
的值。这很奇怪......因为如果我手动设置了ancho
和“alto”的值(对于某个像素),它运行正常,我一直在检查所有变量的范围,此时我不明白为什么这条线:imagen.style.height = alto+"px"
不恢复imagen画质的原始高度值...
是否有可能行: imagen.style.height = nuevo_alto+"px";
改变"alto"
变量的值?
你是我的英雄!我没有意识到,这些改变也会改变变量>。
ether82