Foros del Web » Programando para Internet » Javascript »

Anular la función de clearInterval

Estas en el tema de Anular la función de clearInterval en el foro de Javascript en Foros del Web. Saludos a todos... ¿Abrá alguna manera de desactivar la función de clearInterval()? Me explico. Estoy probando una galería de imágenes que tiene el siguiente código: ...
  #1 (permalink)  
Antiguo 06/02/2011, 13:30
 
Fecha de Ingreso: enero-2011
Ubicación: Cali
Mensajes: 73
Antigüedad: 13 años, 9 meses
Puntos: 2
Pregunta Anular la función de clearInterval

Saludos a todos...

¿Abrá alguna manera de desactivar la función de clearInterval()?

Me explico. Estoy probando una galería de imágenes que tiene el siguiente código:

Código HTML:
Ver original
  1. <div id="titulo">
  2. <h1>GALERÍA DE FOTOS CON CSS + JAVASCRIPT</h1>
  3. </div>
  4.  
  5. <div id="boton">
  6. <input id="button" type="button" value="mas fotos" onclick="javascript: llamar()"></input><br/>
  7. <input id="button" type="button" value="Mariano Civico"></input><br/>
  8. <input id="button" type="button" value="Grupo Niche"></input><br/>
  9. <input id="button" type="button" value="Plan B"></input>
  10. </div>
  11.  
  12. <div id="galeria">
  13. <a href="#"><img class="small" src="1.jpg" alt="" /><span><img src="1.jpg" alt="" /></span></a>
  14. <a href="#"><img class="small" src="2.jpg" alt="" /><span><img src="2.jpg" alt="" /></span></a>
  15. <a href="#"><img class="small" src="3.jpg" alt="" /><span><img src="3.jpg" alt="" /></span></a>
  16. <a href="#"><img class="small" src="4.jpg" alt="" /><span><img src="4.jpg" alt="" /></span></a>
  17. <a href="#"><img class="small" src="5.jpg" alt="" /><span><img src="5.jpg" alt="" /></span></a>
  18. <a href="#"><img class="small" src="6.jpg" alt="" /><span><img src="6.jpg" alt="" /></span></a>
  19. <a href="#"><img class="small" src="7.jpg" alt="" /><span><img src="7.jpg" alt="" /></span></a>
  20. <a href="#"><img class="small" src="9.jpg" alt="" /><span><img src="9.jpg" alt="" /></span></a>
  21. <a href="#"><img class="small" src="10.jpg" alt="" /><span><img src="10.jpg" alt="" /></span></a>
  22. <a href="#"><img class="small" src="11.jpg" alt="" /><span><img src="11.jpg" alt="" /></span></a>
  23. </div>
  24.  
  25. <div id="img_grande">
  26. <h1>Pasa el cursor por las imágenes para verlas más grandes</h1>
  27. </div>

La capa galería tiene como parámetro de estilo un overflow: hidden. Jugando un poco con document.getElementById('galeria').scrollTop y también con setInterval y clearInterval logré obtener que al hacer click sobre un botón las imágenes se vallan desplazando una a una de manera controlada. El javascript queda de la sigueinte manera:

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. <!--
  3. var img = 79;
  4. var move = 0;
  5. var time;
  6. function masImagenes()
  7. {
  8. move += 1;
  9. if (move < img*4)
  10. {
  11.   document.getElementById('galeria').scrollTop = move;
  12. }
  13. if (move == img || move == img*2 || move == img*3 || move == img*4)
  14. {
  15.   clearInterval(time);
  16. }
  17. }
  18. function llamar()
  19. {
  20. time = setInterval('masImagenes()',10);
  21. if (move == 316)
  22. {
  23.   document.getElementById('galeria').scrollTop = 0;
  24. }
  25. }
  26. // -->
  27. </script>

Luego de que el desplazamiento de imágenes alcanza el valor de img*4 (o sea 316) la posición de las imágenes regresa a su estado inicial, o sea scrollTop = 0.

El problema que tengo es que quiero que cuando la galería regrese a su estado inicial pueda llamar a la función nuevamente una y otra vez. Como si fuera un loop infinito.

Alguien me puede ayudar con esto. Se lo agradezco de antemano.
  #2 (permalink)  
Antiguo 06/02/2011, 13:39
Avatar de pato12  
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 17 años, 1 mes
Puntos: 101
Respuesta: Anular la función de clearInterval

Intenta llamando a la función llamar() cuando se termina.. es decir:
Código Javascript:
Ver original
  1. clearInterval(time);
  2. llamar();
__________________
Half Music - www.halfmusic.com
  #3 (permalink)  
Antiguo 06/02/2011, 13:59
 
Fecha de Ingreso: enero-2011
Ubicación: Cali
Mensajes: 73
Antigüedad: 13 años, 9 meses
Puntos: 2
Respuesta: Anular la función de clearInterval

Cita:
Iniciado por pato12 Ver Mensaje
Intenta llamando a la función llamar() cuando se termina.. es decir:
Código Javascript:
Ver original
  1. clearInterval(time);
  2. llamar();
Saludos pato12...

Gracias por tu pronta respuesta .

Pues ya había intentado lo de llamar a la función. Como quiera lo intenté de nuevo y lo que hace es que al hacer click sobre el botón el clearInterval no se ejecuta y de una el desplazamiento va desde img hasta img*4. Y pues no me permite el loop.


Seguiré estidiando y probando el código haber que es lo que puedo implementar o cambiar.

Si alguien tiene otra sugerencia o consejo se le agradece.
  #4 (permalink)  
Antiguo 06/02/2011, 18:07
Avatar de pato12  
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 17 años, 1 mes
Puntos: 101
Respuesta: Anular la función de clearInterval

Ah espera, proba resetiando la variable move .. :P (volvela a 0)
__________________
Half Music - www.halfmusic.com
  #5 (permalink)  
Antiguo 06/02/2011, 22:12
 
Fecha de Ingreso: enero-2011
Ubicación: Cali
Mensajes: 73
Antigüedad: 13 años, 9 meses
Puntos: 2
Respuesta: Anular la función de clearInterval

Cita:
Iniciado por pato12 Ver Mensaje
Ah espera, proba resetiando la variable move .. :P (volvela a 0)
Saludos pato12.

Pues siguiendo tu consejo funcionó lo del loop.

El problema que tengo ahora es que cuando comienza el loop, no hace una pausa en la primera imagen y entra directamente al desplazamiento hacia la segunda imagen, o sea no para en 0 y comienza directamente a avanzar hacia img (que es igual a 79).

Pero nada tu aporte ha sido de mucha ayuda hasta ahora. Le seguiré buscando al código haber como puedo seguir mejorándolo. Por cierto el mismo quedó de la siguiente manera:

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. <!--
  3. var img = 79;
  4. var move = 0;
  5. var time;
  6. function masImagenes()
  7. {
  8. move += 1;
  9. if (move < 316)
  10. {
  11.   document.getElementById('galeria').scrollTop = move;
  12. }
  13. if (move == img || move == 158 || move == 237 || move == 316)
  14. {
  15.   clearInterval(time);
  16. }
  17. }
  18. function llamar()
  19. {  
  20.  time = setInterval('masImagenes()',10);
  21. if (move == 316)
  22. {
  23.   move = 0;
  24.   document.getElementById('galeria').scrollTop = move;
  25. }
  26. }
  27. // -->
  28. </script>

Gracias...
  #6 (permalink)  
Antiguo 07/02/2011, 16:40
Avatar de pato12  
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 17 años, 1 mes
Puntos: 101
Respuesta: Anular la función de clearInterval

Ponele un setTimeout para llamar a llamar()... así va a tener una pausa.. :P
__________________
Half Music - www.halfmusic.com
  #7 (permalink)  
Antiguo 08/02/2011, 07:23
 
Fecha de Ingreso: enero-2011
Ubicación: Cali
Mensajes: 73
Antigüedad: 13 años, 9 meses
Puntos: 2
Respuesta: Anular la función de clearInterval

Cita:
Iniciado por pato12 Ver Mensaje
Ponele un setTimeout para llamar a llamar()... así va a tener una pausa.. :P
Hola pato12...

Intenté lo que me dices pero me parece que quizás el problema soy yo pues sólo llevo unos meses aprendiendo javascript y creo que puede ser lo siguiente:

1. O no estoy escribiendo el setTimeout donde es debido

2. O no le estoy asignando el valor de tiempo correcto para causar el efecto deseado.

El Código me queda de la siguiente manera:

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. <!--
  3. var img = 79;
  4. var move = 0;
  5. var time;
  6. function masImagenes()
  7. {
  8. move += 1;
  9. if (move < 316)
  10. {
  11.   document.getElementById('galeria').scrollTop = move;
  12. }
  13. if (move == img || move == 158 || move == 237 || move == 316)
  14. {
  15.   clearInterval(time);
  16. }setTimeout("llamar()",0);
  17. }
  18. function llamar()
  19. {  
  20.  
  21. time = setInterval('masImagenes()',10);
  22.  
  23. if (move == 316)
  24. {
  25.   move = 0;
  26.   document.getElementById('galeria').scrollTop = move;
  27.     setTimeout("llamar()",0);
  28. }
  29. }
  30. // -->
  31. </script>



De esta forma cuando llamo a la Función haciendo CLICK en el botón las imágenes pasan muy rápido y no se cumple el efecto deseado.

Ya lo he situado en otras partes pero no he tenido suerte.

Ojalá me puedas ayudar un poco con esta prueba... de antemano gracias.
  #8 (permalink)  
Antiguo 08/02/2011, 19:57
Avatar de pato12  
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 17 años, 1 mes
Puntos: 101
Respuesta: Anular la función de clearInterval

Prueba así:

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. <!--
  3. var img = 79;
  4. var move = 0;
  5. var time;
  6. function masImagenes()
  7. {
  8. move += 1;
  9. if (move < img*4)
  10. {
  11. &#160; document.getElementById('galeria').scrollTop = move;
  12. }
  13. if (move == img || move == img*2 || move == img*3 || move == img*4)
  14. {
  15. &#160; move = 0;
  16. &#160; clearInterval(time);
  17. &#160; setTimeout("llamar();",2*1000); // 2 segundos esperamos y llamo a llamar :P
  18. }
  19. }
  20. function llamar()
  21. {
  22. time = setInterval('masImagenes()',10);
  23. if (move == 316)
  24. {
  25. &#160; document.getElementById('galeria').scrollTop = 0;
  26. }
  27. }
  28. // -->
  29. </script>
__________________
Half Music - www.halfmusic.com
  #9 (permalink)  
Antiguo 17/02/2011, 17:20
 
Fecha de Ingreso: enero-2011
Ubicación: Cali
Mensajes: 73
Antigüedad: 13 años, 9 meses
Puntos: 2
Respuesta: Anular la función de clearInterval

Saludos pato12....

Disculpa el no haberte respondido antes pero es que estuve fuera de mi país y pues no tuve tiempo para concentrarme en el script.

Intenté lo que me propones con el uso de setTimeout pero no me funcionó. Al fin que después de pensarle la pausa que requería la logré con un clearInterval dentro de la función llamar().

El Código quedó de la sigiuente manera:

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. <!--
  3. var img = 79;
  4. var move = 0;
  5. var time;
  6. function masImagenes()
  7. {
  8. move += 1;
  9. if (move < img)
  10. {
  11.   document.getElementById('galeria').scrollTop = move;
  12. }
  13. if (move == img || move == img*2|| move == img*3 || move == img*4)
  14. {
  15.   clearInterval(time);
  16. }
  17. }
  18. function llamar()
  19. {  
  20. time = setInterval('masImagenes()',10);
  21.  
  22. if (move == img*4)
  23. {
  24.   move = 0;
  25.   document.getElementById('galeria').scrollTop = move;
  26.   clearInterval(time);
  27. }
  28. }
  29. // -->
  30. </script>

GRACIAS por tu ayuda...

Etiquetas: anular
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 15:00.