Foros del Web » Programando para Internet » Javascript »

setTimeout

Estas en el tema de setTimeout en el foro de Javascript en Foros del Web. Hola, hice el sig. codigo queria saber si alguien puede decirme que esta mal ya se que el contador esta echo asi nomas y no ...
  #1 (permalink)  
Antiguo 28/01/2008, 22:54
 
Fecha de Ingreso: diciembre-2007
Mensajes: 7
Antigüedad: 16 años, 4 meses
Puntos: 0
setTimeout

Hola, hice el sig. codigo queria saber si alguien puede decirme que esta mal ya se que el contador esta echo asi nomas y no cuenta bien pero mi problema es otro, mas importante...

El problema es que tengo varios contadores, (cuenta regresiva) y solamente anda 1 solo, logre hacer andar muchos pero repitiendo la funcion con diferentes nombres.. esto hace q existan "limitados" contadores, yo requiero que sean "infinitos" entonces adapte la funcion de una forma que ande.. pero no lo logre, al probarlo.. aparecen todos los contadores.. bien! pero solamente se mueve el ultimo en cargar, todos los otros estan "estaticos".

Codigo php:
$sql=mysql_query("SELECT * FROM atacar WHERE id_u = '$id' ORDER BY fe ASC",$con);
while($row = mysql_fetch_array($sql)){
$i = $i + 1;
$secAAA = $row["fe"] - time();
$houAAA = 0;
$minAAA = 0;
while ($secAAA >= 60){
$secAAA = $secAAA - 60;
$minAAA = $minAAA + 1;
}
while ($minAAA >= 60){
$minAAA = $minAAA - 1;
$houAAA = $houAAA + 1;
}
if ($comenzar == NULL){
$comenzar = '<body onLoad="startCountdownAAA('.$houAAA.', '.$minAAA.', '.$secAAA.', '.$i.');';
}else{
$comenzar = $comenzar.'startCountdownAAA('.$houAAA.', '.$minAAA.', '.$secAAA.', '.$i.');';
}
}





$comenzar = $comenzar.'">';
echo $comenzar;




Header de la web:

function startCountdownAAA(vhou, vmin, vsec, elemento){
sec = vsec;
min = vmin;
hou = vhou;
elem = elemento;
if((hou + min + sec) >= 0){
sec = sec - 1;
if(sec == 0){
if (min >= 1){
min = min - 1;
sec = 59;
}
if (min == 0){
if (hou >= 1){
hou = hou - 1;
min = 59;
}
}
}
document.getElementById(elem).innerHTML = hou + ':' + min + ':' + sec;
setTimeout('startCountdownAAA(hou, min, sec, elem)',1000);
}else{
document.getElementById(elem).innerHTML = 'COMPLETADO';
}
}
</script>



Saludos, muchas gracias!
  #2 (permalink)  
Antiguo 29/01/2008, 01:59
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: setTimeout

No sé yo xNuker, leer PHP e imaginarnos lo que sale procesado es un poco complicado... ¿podrías postear el resultado? Así lo veríamos mejor.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #3 (permalink)  
Antiguo 29/01/2008, 09:17
 
Fecha de Ingreso: diciembre-2007
Mensajes: 7
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: setTimeout

Por supuesto! no hay problema.. mira


con ese codigo asi me queda esto:

varios timer uno debajo de otro asi: (los leo de la base de datos en timestamp y lo pongo bien para que se puedan leer correctamente.. quedando asi:... )

0:30:4
2:25:58
2:45:10

y... solamente se mueve el ultimo, los otros estan estaticos.
el ultimo, pone al segundo..
2:45:9 luego.. al segundo 2:45:8... anda perfecto! pero los otros 2 quedan muertitos... :/
  #4 (permalink)  
Antiguo 29/01/2008, 09:48
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: setTimeout

Veo que ahí pasa algo con la variable elem. Debería ser un string si es un id, pero está pasado en el setTimeout como número... cuidado con las comillas...

Bueno la verdad es que veo todo el setTimeout mal porque las variables son globales (y no has concatenado nada, no sé muy bien qué se toma en la siguiente llamada...). Las variables deberían ser locales si quieres manejar tres relojes...

Te paso un ejemplo, a ver si sacas conclusiones:
Código PHP:
<div id="c1">&nbsp;</div> <button type="button" onclick="contador(4,'c1')">Empezar éste en 4</button>
<
div id="c2">&nbsp;</div> <button type="button" onclick="contador(-8,'c2')">Empezar éste en -8</button>
<
div id="c3">&nbsp;</div> <button type="button" onclick="contador(65,'c3')">Empezar éste en 65</button>

<
script type="text/javascript">
<!--

// document.getElementById abreviado
function $(x) { return document.getElementById(x); }

function 
contador(ielem) {
    
i++;
    $(
elem).innerHTML i;
    
setTimeout("contador("+i+",'"+elem+"')"1000);
}

// -->
</script> 

Saludos.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #5 (permalink)  
Antiguo 29/01/2008, 10:12
 
Fecha de Ingreso: diciembre-2007
Mensajes: 7
Antigüedad: 16 años, 4 meses
Puntos: 0
De acuerdo Re: setTimeout

perfectamenteeeee correcto xD

Muchas gracias!!! ^^!

setTimeout("startCountdownAAA("+hou+", "+min+", "+sec+", "+elem+")",1000);
  #6 (permalink)  
Antiguo 30/01/2008, 14:54
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: setTimeout

Exacto, a eso me refería.

¡De nada!
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
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 03:41.