dierre
14-02-2007, 16:58
Sì lo so, non si capisce il titolo. Con l'esempio spero si capisca.
Queste sono le due funzioni:
function setOpacity(i) {
obj = document.getElementById("pro");
obj.style.filter = "alpha(opacity="+i+")";
obj.style.opacity = i/100;
i = i-1;
if(i>20) setTimeout('setOpacity('+i+')',20);
return false;
}
function ripOpacity(i) {
obj = document.getElementById("pro");
obj.style.filter = "alpha(opacity="+i+")";
obj.style.opacity = i/100;
i = i+1;
if(i<100) setTimeout('ripOpacity('+i+')',20);
return false;
}
Viene richiamata qui:
<div onMouseOver="setOpacity(100)" onMouseOut="ripOpacity(20)" id="pro">
ciao ciao<br/>
ciao<br/>
Il problema è che se tolgo il mouse prima che finisce l'effetto della prima funzione, la seconda va a baldracche, quindi a me è venuto in mente solo di usare una specie di mutex. Ci sono soluzioni più carine per bloccare le funzioni?
Queste sono le due funzioni:
function setOpacity(i) {
obj = document.getElementById("pro");
obj.style.filter = "alpha(opacity="+i+")";
obj.style.opacity = i/100;
i = i-1;
if(i>20) setTimeout('setOpacity('+i+')',20);
return false;
}
function ripOpacity(i) {
obj = document.getElementById("pro");
obj.style.filter = "alpha(opacity="+i+")";
obj.style.opacity = i/100;
i = i+1;
if(i<100) setTimeout('ripOpacity('+i+')',20);
return false;
}
Viene richiamata qui:
<div onMouseOver="setOpacity(100)" onMouseOut="ripOpacity(20)" id="pro">
ciao ciao<br/>
ciao<br/>
Il problema è che se tolgo il mouse prima che finisce l'effetto della prima funzione, la seconda va a baldracche, quindi a me è venuto in mente solo di usare una specie di mutex. Ci sono soluzioni più carine per bloccare le funzioni?