Foros del Web » Programando para Internet » Javascript »

evitar llamada a funcion mientras se ejecuta

Estas en el tema de evitar llamada a funcion mientras se ejecuta en el foro de Javascript en Foros del Web. Hola, buenas noches si me pueden ayudar, tengo la siguiente situacion. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original function organizaSlider ( ocultar , ocultarb , ...
  #1 (permalink)  
Antiguo 06/02/2012, 18:22
Avatar de gilber966  
Fecha de Ingreso: abril-2010
Mensajes: 117
Antigüedad: 14 años
Puntos: 4
evitar llamada a funcion mientras se ejecuta

Hola, buenas noches si me pueden ayudar, tengo la siguiente situacion.

Código Javascript:
Ver original
  1. function organizaSlider(ocultar,ocultarb,mostrar){
  2. //alert("me llamo");
  3. document.getElementById(ocultar).style.display ="none";
  4. document.getElementById(ocultarb).style.display ="none";
  5. document.getElementById(mostrar).style.display ="none";
  6. Effect.toggle(mostrar, 'blind', {delay:0, duration: 1.0 });
  7. }

tengo un menu q llama a la anterior funcion asi:

Código HTML:
Ver original
  1. <li><a href='#' rel='nofollow' onclick="cloading('subm','nservicios.php'),llamaRetardo(),organizaSlider('subo','subn','subm')">Adicionar</a></li>
  2.   <li><a href='#' rel='nofollow' onclick="cloading('subm','cclientes.php'),llamaRetardob(),organizaSlider('subo','subn','subm')">Consultar</a></li>
  3.   <li><a href='#' rel='nofollow' onclick="cloading('subm','mmodif.php'),llamaRetardob(),organizaSlider('subo','subn','subm')">Modificar</a></li>

el problema es q si se hace click muy rapido en dos botones diferentes se estropea el efecto toggle de scriptaculous, - hay forma de evitar la doble llamada ya

sea a organizaSlider() o a los efectos toggle como tal?


el problema es que se quedan dos elementos visibles y solo debe quedar uno, es como si no terminara de ocultar el anterior y mostrara el nuevo elemento. lo cual es un problema
  #2 (permalink)  
Antiguo 06/02/2012, 19:33
Avatar de Aijoona
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Buenos Aires
Mensajes: 779
Antigüedad: 12 años, 11 meses
Puntos: 343
Respuesta: evitar llamada a funcion mientras se ejecuta

Podés usar un flag y removerlo cuando termina la animacion, lo cual a grosso modo seria lo siguiente:

Código Javascript:
Ver original
  1. var WORKING = false;
  2.  
  3. function organizaSlider(ocultar,ocultarb,mostrar){
  4.     if(WORKING) {
  5.         return;
  6.     }
  7.  
  8.     WORKING = true;
  9.    
  10.     document.getElementById(ocultar).style.display ="none";
  11.     document.getElementById(ocultarb).style.display ="none";
  12.     document.getElementById(mostrar).style.display ="none";
  13.     Effect.toggle(mostrar, 'blind', {
  14.         delay:0,
  15.         duration: 1.0,
  16.         afterFinish: function() {
  17.             WORKING = false;           
  18.         }
  19.     });
  20. }


Entro en lo que es auto publicidad, peeeero:

Throttling y debounce en JavaScript
__________________
blog | @aijoona
  #3 (permalink)  
Antiguo 07/02/2012, 11:01
Avatar de gilber966  
Fecha de Ingreso: abril-2010
Mensajes: 117
Antigüedad: 14 años
Puntos: 4
Respuesta: evitar llamada a funcion mientras se ejecuta

wow, eso estuvo genial no me lo imaginaba, muchas gracias.
  #4 (permalink)  
Antiguo 07/02/2012, 11:04
Avatar de gilber966  
Fecha de Ingreso: abril-2010
Mensajes: 117
Antigüedad: 14 años
Puntos: 4
Respuesta: evitar llamada a funcion mientras se ejecuta

Cita:
Iniciado por Aijoona Ver Mensaje
Podés usar un flag y removerlo cuando termina la animacion, lo cual a grosso modo seria lo siguiente:

Código Javascript:
Ver original
  1. var WORKING = false;
  2.  
  3. function organizaSlider(ocultar,ocultarb,mostrar){
  4.     if(WORKING) {
  5.         return;
  6.     }
  7.  
  8.     WORKING = true;
  9.    
  10.     document.getElementById(ocultar).style.display ="none";
  11.     document.getElementById(ocultarb).style.display ="none";
  12.     document.getElementById(mostrar).style.display ="none";
  13.     Effect.toggle(mostrar, 'blind', {
  14.         delay:0,
  15.         duration: 1.0,
  16.         [COLOR="Red"]afterFinish: function()[/COLOR] {
  17.             WORKING = false;           
  18.         }
  19.     });
  20. }


Entro en lo que es auto publicidad, peeeero:

Throttling y debounce en JavaScript

Última edición por gilber966; 07/02/2012 a las 12:03

Etiquetas: ejecuta, funcion, llamada, mientras, php, botones
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 08:11.