Buenas,
porque antes de lanzar un nuevo setInterval tendrías que comprobar si existe alguno y cancelar. Según tu ejemplo podría ser algo así:
Código Javascript
:
Ver originalfunction comprobar(fun, time, i)
{
if(timers[i])
clearTimeout(timers[i]);
timers[i] = setInterval(fun, time);
}
function muestra(tgt)
{
destino[tgt.id] = -337;
comprobar( function( ){ acciones(tgt); }, 500, tgt.id );
}
function acciones(tgt)
{
tgt.style.left=(tgt.offsetLeft+destinos[tgt.id])/2+'px';
if(tgt.offsetLeft<0 && tgt.offsetLeft>-10)
timers[tgt.id] = null;
}
Me da la sensación de que estás usando un id numérico y eso no es correcto.