Foros del Web » Programando para Internet » Javascript »

Problema/duda Con setTimeout y clearTimeout

Estas en el tema de Problema/duda Con setTimeout y clearTimeout en el foro de Javascript en Foros del Web. Hola a todos,mi problema es este:Realizè una Funcion javascript que mueve a una capa x pixeles por x tiempo, y la funciòn,es llamada por un ...
  #1 (permalink)  
Antiguo 02/07/2009, 06:11
 
Fecha de Ingreso: julio-2009
Ubicación: La Plata
Mensajes: 233
Antigüedad: 14 años, 10 meses
Puntos: 8
[SOLUCIONADO]Problema/duda Con setTimeout y clearTimeout

Hola a todos,mi problema es este:Realizè una Funcion javascript que mueve a una capa x pixeles por x tiempo, y la funciòn,es llamada por un enlace desde el còdigo html,lo que yo quiero lograr,es que al sacar el foco(puntero del mouse) del enlace,este setTimeout deje de llamar a la funciòn usando clearTimeout() y,aunque ya lo he intentado asì no me funciono.
Espero que puedan responderme ya que,como veràn,soy novato y por cierto,gracias de antemano

El còdigo JavaScript es el siguiente:

if(document.all)
{
doc=""
style=".style"
pixelTop=".pixelTop"
pixelLeft=".pixelLeft"
}
function moverAbajo(div,max,pix,vel)
{if(eval(doc+div+style+pixelTop)<max)
{eval(doc+div+style+pixelTop+'+='+pix)}
setTimeout("moverAbajo('"+div+"',"+max+","+pix+"," +vel+")",vel)
}
function moverDerecha(div,max,pix,vel)
{
if(eval(doc+div+style+pixelLeft)<max)
{eval(doc+div+style+pixelLeft+'+='+pix)}
setTimeout("moverDerecha('"+div+"',"+max+","+pix+" ,"+vel+")",vel)
}
function moverArriva(div,min,pix,vel)
{
if(eval(doc+div+style+pixelTop)>min)
{eval(doc+div+style+pixelTop+'-='+pix)}
setTimeout("moverArriva('"+div+"',"+min+","+pix+", "+vel+")",vel)
}
function moverIzquierda(div,min,pix,vel)
{
if(eval(doc+div+style+pixelLeft)>min)
{eval(doc+div+style+pixelLeft+'-='+pix)}
setTimeout("moverIzquierda('"+div+"',"+min+","+pix +","+vel+")",vel)
}

El còdigo html es el siguiente:


<html>
<head><script language="JavaScript" src="Ruta"></script>
<title>
</title>
</head>
<body>

<div id="movimientos">
<table>
<tr><td colspan="3"><a href="#" onclick="moverArriva('cura',0,1,100)"id="farriva"> <img src="Ruta" width="16" height="16" alt="Click Aquì Para Mover Unidad Hacia Arriva"/></a></td></tr>
<tr><td><a href="#" onclick="moverIzquierda('cura',0,1,100)"><img src="Ruta" width="16" height="16" alt="Click Aquì Para Mover Unidad Hacia La Izquierda"/></a></td><td><a href="#" onclick="moverAbajo('cura',450,1,100)"><img src="Ruta" width="16" height="16" alt="Click Aquì Para Mover Unidad Hacia Abajo"/></a></td>
<td><a href="#" onclick="moverDerecha('cura',450,1,100)"><img src="ruta" width="16" height="16" alt="Click Aquì Para Mover Unidad Hacia La Derecha"/></a></td></tr>
</table>
</div>
<div id="cura"><img src="Ruta" width="35" height="52"/>
</div>
</body>
</html>

Lo queintentè(lo cual me tira error),es lo siguiente:

function stop()
{clearTimeout("moverIzquierda('"+div+"',"+min+","+ pix+","+vel+")")}

Última edición por pistonasos; 05/07/2009 a las 14:58
  #2 (permalink)  
Antiguo 02/07/2009, 07:34
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 46
Antigüedad: 14 años, 11 meses
Puntos: 7
Respuesta: Problema/duda Con setTimeout y clearTimeout

Hola,

Cuando utilizas setTimeout, la función devuelve una referencia que es la que tienes que utilizar despues para pararlo.

En cada setTimeout que inicies guardas la referencia, por ejemplo:

Código:
timer1 = setTimeout("moverAbajo('"+div+"',"+max+","+pix+"," +vel+")",vel)
Para pararlo haces:

Código:
clearTimeout(timer1);
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:05.