Foros del Web » Programando para Internet » Javascript »

llamar funcion javascript solo una vez

Estas en el tema de llamar funcion javascript solo una vez en el foro de Javascript en Foros del Web. Resulta que cada vez que el usuario hace scrol llamo una funcion, pero esta funcion se llama constantemente al hacer scroll y yo solo quiero ...
  #1 (permalink)  
Antiguo 05/09/2015, 12:59
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
llamar funcion javascript solo una vez

Resulta que cada vez que el usuario hace scrol llamo una funcion, pero esta funcion se llama constantemente al hacer scroll y yo solo quiero llamarla una vez pongo codigo.

Código Javascript:
Ver original
  1. window.addEventListener("scroll", function(){
  2.     miFuncion();
  3. }

la funcion simplemente lo que hace es cerrar un menu si esta abierto, el problema es ese que llamo a la funcion varias veces abriendo menu y cerrando, como podria solucionar este problema.

saludos
  #2 (permalink)  
Antiguo 05/09/2015, 13:25
 
Fecha de Ingreso: julio-2011
Mensajes: 220
Antigüedad: 12 años, 9 meses
Puntos: 72
Respuesta: llamar funcion javascript solo una vez

Se me ocurre que se puede crear un variable con valor inicial true y con un if verificar el valor de esa variable para llamar o no a la función, por último dentro de miFunción() cambiar la variable a false.

Código Javascript:
Ver original
  1. var llamarFuncion= true;
  2.  
  3. window.addEventListener("scroll", function() {
  4.     if(llamarFuncion) {
  5.         miFuncion();
  6.     }
  7. })
  8.  
  9. miFuncion() {
  10.     llamarFuncion= false;
  11.     ...
  12. }
  #3 (permalink)  
Antiguo 05/09/2015, 13:27
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 7 meses
Puntos: 578
Respuesta: llamar funcion javascript solo una vez

Debes crear una función no anónima para poder referenciarla dentro de sí misma, y de esta forma eliminar el listener asociado a tal evento:

Código Javascript:
Ver original
  1. function listener(e){
  2.     miFuncion();
  3.     window.removeEventListener("scroll", listener, false);
  4. }
  5. window.addEventListener("scroll", listener, false);
  #4 (permalink)  
Antiguo 05/09/2015, 13:29
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
Respuesta: llamar funcion javascript solo una vez

Hola, esa solucion ya me la replantee, pero lo que pasa que puse un ejemplo basico, en realidad llamo a 4 funciones, entonces tendria que añadir a todas las funciones la llamarfuncion a false, pero en principio lo tengo asi, si alguien sabe una manera mas efectiva para hacer esto si no lo dejo asi.

Gracias lubtufano
  #5 (permalink)  
Antiguo 05/09/2015, 13:32
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
Respuesta: llamar funcion javascript solo una vez

PHPeros, no entiendo a que te refieres exactamente.
  #6 (permalink)  
Antiguo 05/09/2015, 13:53
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 7 meses
Puntos: 578
Respuesta: llamar funcion javascript solo una vez

¿Lo has probado? El ejemplo que puse simplemente elimina el evento una vez se ha ejecutado. Por lo tanto solo llega a ejecutarse una vez.
  #7 (permalink)  
Antiguo 05/09/2015, 15:04
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
Respuesta: llamar funcion javascript solo una vez

y luego para volver a ejecutar la funcion como seria?
saludos
  #8 (permalink)  
Antiguo 05/09/2015, 21:06
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: llamar funcion javascript solo una vez

Siguiendo la misma lógica:

Código Javascript:
Ver original
  1. var ejecutar = true,
  2.     funcion1 = function(){
  3.         /* Instrucciones */
  4.     },
  5.     funcion2 = function(){
  6.         /* Instrucciones */        
  7.     },
  8.     funcion3 = function(){
  9.         /* Instrucciones */
  10.     },
  11.     funcion4 = function(){
  12.         /* Instrucciones */
  13.     };
  14.  
  15. window.addEventListener("scroll", function(){
  16.     if (ejecutar){
  17.         funcion1();
  18.         funcion2();
  19.         funcion3();
  20.         funcion4();
  21.         ejecutar = false;
  22.     }
  23. }, false);

De este modo, controlas la ejecución de las cuatro funciones desde la llamada de retorno que se ejecuta al producirse el scroll.

Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: funcion, vez
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 07:23.