Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Como hacer que se ejecuten una serie de funciones segun que..

Estas en el tema de Como hacer que se ejecuten una serie de funciones segun que.. en el foro de Javascript en Foros del Web. Buenos días, tengo el siguiente código. Tengo la idea de hacer una especie de mini-slider, para las noticias de mi web, la idea es que ...
  #1 (permalink)  
Antiguo 19/10/2015, 04:40
Avatar de Morod0  
Fecha de Ingreso: julio-2015
Ubicación: Valencia
Mensajes: 63
Antigüedad: 9 años, 4 meses
Puntos: 1
Como hacer que se ejecuten una serie de funciones segun que..

Buenos días, tengo el siguiente código.

Tengo la idea de hacer una especie de mini-slider, para las noticias de mi web, la idea es que cada x segundos pasen las noticias solas, pero si te pones encima con el ratón pare el intervalo y pueda navegar por los botones de las noticias...

Las dos maneras "sueltas" me funcionan, el problema es cuando las quiero poner las dos.. he probado en ponerle un mouseleave al intervalo por ejemplo y nada.. al final acaba volviendose loco el js..

Os agradeceria una ayuda porque no se por donde salir

Código Javascript:
Ver original
  1. /*Intervalo de movimiento*/
  2.  
  3.     setInterval(function() {
  4.  
  5.        $(".noticias-contenedor-index").delay( 2000 ).animate({marginLeft:"-4px"},{duration: 600 });    
  6.                        
  7.     $(".noticias-contenedor-index").delay( 2000 ).animate({marginLeft:"-662px"},{duration: 600 });
  8.  
  9.     $(".noticias-contenedor-index").delay( 2000).animate({marginLeft:"-1320px"},{duration: 600 });
  10.                     },1000);
  11.                    
  12. /*Nevegar por el menu*/    
  13.                        
  14. $("#boton1").click(function(){
  15.     $(".noticias-contenedor-index").animate({marginLeft:"-4px"},{duration: 600
  16. });
  17.     });
  18.                    
  19. $("#boton2").click(function(){
  20.     $(".noticias-contenedor-index").animate({marginLeft:"-662px"},{duration: 600      });  
  21.     });
  22. $("#boton3").click(function(){
  23.     $(".noticias-contenedor-index").animate({marginLeft:"-1320px"},{duration: 600 });  
  24.     });


Un saludo!
  #2 (permalink)  
Antiguo 19/10/2015, 06:14
Avatar de Morod0  
Fecha de Ingreso: julio-2015
Ubicación: Valencia
Mensajes: 63
Antigüedad: 9 años, 4 meses
Puntos: 1
Respuesta: Como hacer que se ejecuten una serie de funciones segun que..

nadie tiene ni idea? con mouseenter o mouseleave no hay manera.. al menos pensando que lo hago bien..
  #3 (permalink)  
Antiguo 19/10/2015, 06:40
Avatar de Germano6  
Fecha de Ingreso: mayo-2013
Mensajes: 61
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Como hacer que se ejecuten una serie de funciones segun que..

Prueba mouseout.
__________________
Simple principiante. Déjame las cosas claras y no me preguntes.
  #4 (permalink)  
Antiguo 19/10/2015, 07:12
 
Fecha de Ingreso: enero-2015
Ubicación: Cordoba, Andalucía
Mensajes: 111
Antigüedad: 9 años, 10 meses
Puntos: 15
Respuesta: Como hacer que se ejecuten una serie de funciones segun que..

Apoyo a germano6.

No hagas una función anónima, programa el setinterval dentro de una función definida.

Luego puedes poner los tres botones dentro de un div que contenga un onmouseout=function setinteval(); y un onmouseover con una función que contenga un clearinterval.
  #5 (permalink)  
Antiguo 19/10/2015, 08:15
Avatar de Morod0  
Fecha de Ingreso: julio-2015
Ubicación: Valencia
Mensajes: 63
Antigüedad: 9 años, 4 meses
Puntos: 1
Respuesta: Como hacer que se ejecuten una serie de funciones segun que..

Cita:
Iniciado por MrGilbertMan Ver Mensaje
Apoyo a germano6.

No hagas una función anónima, programa el setinterval dentro de una función definida.

Luego puedes poner los tres botones dentro de un div que contenga un onmouseout=function setinteval(); y un onmouseover con una función que contenga un clearinterval.
Cita:
Iniciado por Germano6 Ver Mensaje
Prueba mouseout.

Buenas y gracias por contestar, lo que no entiendo es porque no funciona esto así:

Código Javascript:
Ver original
  1. $(".a").mouseout(function(){
  2.                 setInterval(function() {
  3.                             $(".noticias-contenedor-index").delay( 2000 ).animate({marginLeft:"-4px"},{duration: 600 });                               
  4.                             $(".noticias-contenedor-index").delay( 2000 ).animate({marginLeft:"-662px"},{duration: 600 });
  5.                             $(".noticias-contenedor-index").delay( 2000).animate({marginLeft:"-1320px"},{duration: 600 });
  6.                         },1000);       
  7.                                                            
  8.                 });
  9.                
  10.        
  11.     /*Navegar por el slider*/              
  12.                    
  13.             $("#boton1").click(function(){
  14.                 $(".noticias-contenedor-index").animate({marginLeft:"-4px"},{duration: 600 }); 
  15.                     });
  16.                    
  17.             $("#boton2").click(function(){
  18.                 $(".noticias-contenedor-index").animate({marginLeft:"-662px"},{duration: 600 });   
  19.                     });
  20.                    
  21.             $("#boton3").click(function(){
  22.                 $(".noticias-contenedor-index").animate({marginLeft:"-1320px"},{duration: 600 });  
  23.                     });


No hay manera de que me funcione... se queda totalmente parado, pero si clickeo encima, empieza a hacer el movimiento automatico, eso si, lo ultimo para navegar por el slider con los botones o que se quede parado si tienes el mouse encima de ".a" no sirve... no tiene sentido vamos..

que tengo mal en este código?
  #6 (permalink)  
Antiguo 19/10/2015, 09:34
Avatar de Cassers  
Fecha de Ingreso: octubre-2015
Mensajes: 16
Antigüedad: 9 años, 1 mes
Puntos: 3
Respuesta: Como hacer que se ejecuten una serie de funciones segun que..

Cuando estas usando el setInterval, tienes que crear una referencia para destruirlo o se seguira ejecutando cuando intentes hacer otra cosa con el control.

La documentación al respecto la vez aquí http://www.w3schools.com/jsref/met_win_clearinterval.asp

Código Javascript:
Ver original
  1. var myVar = setInterval(function(){ myTimer() }, 1000);
  2.  
  3. function myTimer() {
  4.     var d = new Date();
  5.     var t = d.toLocaleTimeString();
  6.     document.getElementById("demo").innerHTML = t;
  7. }
  8.  
  9. function myStopFunction() {
  10.     clearInterval(myVar);
  11. }
  #7 (permalink)  
Antiguo 22/10/2015, 04:43
Avatar de Morod0  
Fecha de Ingreso: julio-2015
Ubicación: Valencia
Mensajes: 63
Antigüedad: 9 años, 4 meses
Puntos: 1
Respuesta: Como hacer que se ejecuten una serie de funciones segun que..

Cita:
Iniciado por Cassers Ver Mensaje
Cuando estas usando el setInterval, tienes que crear una referencia para destruirlo o se seguira ejecutando cuando intentes hacer otra cosa con el control.

La documentación al respecto la vez aquí http://www.w3schools.com/jsref/met_w...arinterval.asp

Código Javascript:
Ver original
  1. var myVar = setInterval(function(){ myTimer() }, 1000);
  2.  
  3. function myTimer() {
  4.     var d = new Date();
  5.     var t = d.toLocaleTimeString();
  6.     document.getElementById("demo").innerHTML = t;
  7. }
  8.  
  9. function myStopFunction() {
  10.     clearInterval(myVar);
  11. }


Muchas gracias, tengo que mirarme mas el js, me lio muchisimo... efectivamente era porque tenia que destruir el intervalo.

Gracias!

Etiquetas: funcion, funciones, js, serie
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:07.