Ver Mensaje Individual
  #4 (permalink)  
Antiguo 18/02/2011, 19:11
oms02
 
Fecha de Ingreso: junio-2010
Mensajes: 373
Antigüedad: 14 años
Puntos: 11
Respuesta: problema con js dentro de un while en php

No se si voy hacia atras como los cangrejos, pero he decidido separar los codigos para hacerlo un poquito mas legible.

Estos dos primeros fragmentos de codigo van totalmente seguidos, en el mismo archivo.

Lo unico que he cambiado es que dentro del contenedor he metido un div en el que escribo los tiempos (en realidad nºs separados por ":") por separado de ambas cuentas-atras. A continuacion, en el fichero reloj.js (ahora externo), recojo los valores y hago lo mismo.

Código PHP:
Ver original
  1. <?php
  2. ...
  3. $i=0;
  4. while($tiempos = mysql_fetch_array($consulta))
  5.     {
  6.     $horas[$i][1]=...;
  7.     $horas[$i][0]=...;
  8.     ?>

Código HTML:
Ver original
  1. <div class="contenedortiempos">
  2.     <div id="numeros-cuentaatras<?php echo $i ?>"><?php echo $horas[$i][0].":".$horas[$i][1] ?></div>
  3.     <script type="text/javascript">reloj(<?php echo $i ?>)</script>
  4.     <div class="tiempos" id="dechora<?php echo $i ?>"></div>
  5.     <div class="tiempos" id="unihora<?php echo $i ?>"></div>
  6.     <div class="tiempos" id="dospuntos1"></div>
  7. </div>
  8.     <?php
  9.     $i++;
  10.     }
  11. ?>

y ahora el fichero js
Código Javascript:
Ver original
  1. function reloj(i)
  2. {
  3. var digitos = $("#numeros-cuentaatras"+i).text();
  4. var digito = digitos.split(':');
  5. var decHora = digito[0],
  6.     uniHora = digito[1];
  7.    
  8. cuentaAtras = function(decHora,uniHora,decMin,uniMin,decSeg,uniSeg) {
  9.     $("#dechora"+i).removeClass().addClass("numero"+decHora);
  10.     $("#unihora"+i).removeClass().addClass("numero"+uniHora);
  11.     $("#dospuntos1, #dospuntos2").addClass("dospuntos");
  12. }
  13.  
  14. var intervalo = setInterval(function(){
  15.     ...
  16.     ...el codigo que hace la cuenta atras...
  17.     ...
  18. cuentaAtras(decHora,uniHora,decMin,uniMin,decSeg,uniSeg);
  19. },1000);
  20.  
  21. }

El resultado es el mismo. Ahora la cuenta atras si que la hace correctamente (de segundo en segundo) pero de nuevo, el 1er conjunto de divs completamente parado.

"Estaba convencido" de que asi funcionaria (a mi modo ver hago que ambos sean totalmente independientes, llamando a la misma funcion pero haciendo referencia a lugares del DOM diferentes), pero....mi gozo en un pozo.

Alguna idea porfavor??

Un saludo a todos y gracias de nuevo por el interes.