Foros del Web » Programando para Internet » Jquery »

Detener un bucle por 5 segundos

Estas en el tema de Detener un bucle por 5 segundos en el foro de Jquery en Foros del Web. Hola, Necesito que el bucle se detenga por 5 segundos, para mostrar todos los contenidos uno a uno, este mi código: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript ...
  #1 (permalink)  
Antiguo 30/07/2015, 10:15
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 3 meses
Puntos: 12
Detener un bucle por 5 segundos

Hola,

Necesito que el bucle se detenga por 5 segundos, para mostrar todos los contenidos uno a uno, este mi código:
Código Javascript:
Ver original
  1. $(document).ready(function() {  
  2.   function poll() {
  3.     setTimeout(function() {
  4.         $.ajax({
  5.             url: "sum.php",
  6.             type: "POST",
  7.             success: function(data) {
  8.                 $.each(data, function( key, value ) {
  9.                     var output = "";
  10.                     $.each( value, function ( userkey, uservalue) {
  11.                         output += '<ul>';
  12.                         output += '<li>' + userkey + ': ' + uservalue + "</li>";
  13.                         output += '</ul>';
  14.                     });
  15.                     $("#counter").html(output);
  16.                     setTimeout(true,5000); //Aqui debe detenerse
  17.                 });
  18.             },
  19.             dataType: "json",
  20.             complete: poll,
  21.             // timeout: 5000,
  22.         })
  23.     }, 5000);
  24.   };
  25.   poll();
  26.  
  27. });

Actualmente me muestra el resultado pero sólo el último contenido.

Gracias por su ayuda
  #2 (permalink)  
Antiguo 30/07/2015, 12:50
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 7 meses
Puntos: 578
Respuesta: Detener un bucle por 5 segundos

Podrías probar con .delay(), pero la parte:

Código Javascript:
Ver original
  1. $("#counter").html(output);

deberías añadirla dentra de la función de each para que se ejecute.
  #3 (permalink)  
Antiguo 30/07/2015, 14:03
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 3 meses
Puntos: 12
Respuesta: Detener un bucle por 5 segundos

Delay() se aplica para detener un tiempo de una cola (diría entre una y otra cola), lo cual no se aplica en mi caso por que lo que muestro son datos de un json.

ahora el $("#counter").html(output); si se debe quedar ahi por que el json es de dos dimensiones:

Cita:
[Object { id="8", artist="Ernesto Douglas", title="Laureles"}, Object { id="7", artist="David rugeles", title="Laureles"}, Object { id="6", artist="David Aratia", title="Laureles"}, Object { id="5", artist="Gotye", title="Making Mirrors"}, Object { id="4", artist="Lana Del Rey", title="Born To Die"}]
se me ocurre que la única forma de solucionarlo es usando setInterval y setTimeout llamando a funciones separadas.

Si tienen algún enlace que pueda ayudarme lo agradeceré mucho.

Saludos
  #4 (permalink)  
Antiguo 30/07/2015, 14:18
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 3 meses
Puntos: 12
Respuesta: Detener un bucle por 5 segundos

Esta solución me parece buena
Código Javascript:
Ver original
  1. $(document).ready(function() {  
  2.   function poll() {
  3.     setTimeout(function() {
  4.         $.ajax({
  5.             url: "sum.php",
  6.             type: "POST",
  7.             success: function(data) {
  8.                 $.each(data, function( key, value ) {
  9.                     var output = "";
  10.                     output = setInterval(ciclo(value),1000);
  11.                     $("#counter").html(output);
  12.                     // setTimeout(true,1000);
  13.                 });
  14.             },
  15.             dataType: "json",
  16.             complete: poll,
  17.  
  18.         })
  19.     }, 5000);
  20.   };
  21.   poll();
  22.  
  23.     function ciclo (value) {
  24.         var output = "";
  25.         $.each( value, function ( userkey, uservalue) {
  26.             output += '<ul>';
  27.             output += '<li>' + userkey + ': ' + uservalue + "</li>";
  28.             output += '</ul>';
  29.         });
  30.         return output;
  31.     }    
  32. });
pero me dice que el return está mal:

Cita:
SyntaxError: expected expression, got '<'

<ul><li>id: 8</li></ul><ul><li>artist: Ernesto Douglas</li><
y la verdad no se donde esta el problema

Etiquetas: bucle, detener, segundos
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 02:55.