PDA

View Full Version : [Javascript] bloccare una funzione abbinata ad un evento richiamandola da un'altra.


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?

dierre
15-02-2007, 12:47
vabbè, risolto. Avrei un'altra domanda.

Se tipo questo obj.style.filter o questo obj.style.opacity non esistono, che tipo di errore si riscontra? Genera qualche eccezione? (la console javascript non dice nada)

MEMon
15-02-2007, 20:00
se non esiste ma non pretendi nessun metodo o propietà da esso non ti da nessun errore.