Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Retroceder en una función

Estas en el tema de Retroceder en una función en el foro de Frameworks JS en Foros del Web. Hola, quiero que cuando una función llega hasta el final vuelva al principio. La función es la siguiente: $(document).ready(function(){ $("#artist_1").show(); setTimeout(function(){ $("#artist_1").hide(); $("#artist_2").show(); setTimeout(function(){ $("#artist_2").hide(); ...
  #1 (permalink)  
Antiguo 07/01/2010, 02:04
 
Fecha de Ingreso: diciembre-2008
Mensajes: 67
Antigüedad: 15 años, 4 meses
Puntos: 1
Retroceder en una función

Hola, quiero que cuando una función llega hasta el final vuelva al principio. La función es la siguiente:

$(document).ready(function(){
$("#artist_1").show();
setTimeout(function(){
$("#artist_1").hide();
$("#artist_2").show();
setTimeout(function(){
$("#artist_2").hide();
$("#artist_3").show();
setTimeout(function(){
$("#artist_3").hide();
$("#artist_4").show();
}, 5000);
}, 5000);
}, 5000);
});

O sea, cuando llegue hasta mostrar el artist_4 que vuelva a artist_1. He probado con "return true;" pero tampoco se exactamente como funciona. Espero que alguien me eche una mano :P

Saludos.
  #2 (permalink)  
Antiguo 07/01/2010, 04:51
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 4 meses
Puntos: 65
Respuesta: Retroceder en una función

setInterval ejecuta cada x segundos y setTimeout una sola vez después de x segundos, para suspender clearInterval y clearTimeout

Código HTML:
<html>
<head>
    <title>Prueba</title>
    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
    <script type="text/javascript">
        $(function (){
            setInterval("mostrar()",1000);
        });
        var i = 0;
        function mostrar (){
            $('#cont').append("ejecucion "+ (++i)+"<br />");
        }
    </script>
</head>
<body>
    <div id="cont"></div>
</body>
</html> 
  #3 (permalink)  
Antiguo 07/01/2010, 08:45
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: Retroceder en una función

es simple. Encapsulas todo en una funcion redundante:

Cita:
function infinita() {

// codigo a ejecutar

infinita(); // llamada a la funcion dentro de la funcion, lo cual la hace infinita

};
  #4 (permalink)  
Antiguo 07/01/2010, 08:46
 
Fecha de Ingreso: diciembre-2008
Mensajes: 67
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: Retroceder en una función

Gracias por responder, pero eso no vuelve al principio
  #5 (permalink)  
Antiguo 07/01/2010, 08:50
 
Fecha de Ingreso: diciembre-2008
Mensajes: 67
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: Retroceder en una función

He probado lo tuyo Mayid y no funciona, lo he puesto de esta manera, no se si esta bien

Cita:
$(function infinita() {
$("#artist_1").show();
setTimeout(function(){
$("#artist_1").hide();
$("#artist_2").show();
setTimeout(function(){
$("#artist_2").hide();
$("#artist_3").show();
setTimeout(function(){
$("#artist_3").hide();
$("#artist_4").show();
}, 5000);
}, 5000);
}, 5000);

infinita();
});
  #6 (permalink)  
Antiguo 07/01/2010, 09:27
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 4 meses
Puntos: 65
Respuesta: Retroceder en una función

funciona de las 2 formas, capaz que no lo implementas bien

copia el código y ejecutalo vas a ver como sale el alerta que dice principio y final una y otra vez, puse cada 3 segundos para que lo puedas cerrar, si queres pone 0

Código HTML:
<html>
<head>
    <title>Prueba</title>
    <script type="text/javascript">
        function mostrar (){
            alert("Estoy en el principio de la funcion mostrar()");
            alert("Estoy en el final de la funcion mostrar()");
        }
        //setInterval("mostrar()",3000);
    </script>
</head>
<body>
    <div id="cont"></div>
</body>
</html> 
y con lo de mayid tambien funciona, si no funciona imprimiria solo una vez jeje
(ojo que vas a tener que cerrar con el administrador de tareas)

Código HTML:
<html>
<head>
    <title>Prueba</title>
    <script type="text/javascript">
        function mostrar (){
            alert("Estoy en el principio de la funcion mostrar()");
            alert("Estoy en el final de la funcion mostrar()");
            mostrar()
        }
        mostrar();
    </script>
</head>
<body>
    <div id="cont"></div>
</body>
</html> 
  #7 (permalink)  
Antiguo 07/01/2010, 10:12
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: Retroceder en una función

Cita:
$(function infinita() {
Eso no va.

Ademas, es necesario que la funcion sea leida una vez, pero no ejecutada. Es decir, tiene que ir dentro de un domready, para ejecturse recien al terminar de cargar la pagina:
Cita:
$(document).ready(function(){

function infinita() {
$("#artist_1").show();
setTimeout(function(){
$("#artist_1").hide();
$("#artist_2").show();
setTimeout(function(){
$("#artist_2").hide();
$("#artist_3").show();
setTimeout(function(){
$("#artist_3").hide();
$("#artist_4").show();
}, 5000);
}, 5000);
}, 5000);

infinita();
}

});
Igual, yo super desrecomiendo un loop infinito.

Etiquetas: retroceder
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 21:23.