Ver Mensaje Individual
  #5 (permalink)  
Antiguo 28/04/2009, 13:02
ripoll
 
Fecha de Ingreso: abril-2009
Mensajes: 3
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: como hacer: Múltiples cuenta atrás

Vale, problema resuelto ;)

Aquí dejo el código para poder hacer múltiples cuentas atras (pasados por una variable en PHP), y mostrarlos en donde querais del documento html.


Variables a modificar:
$nombremm => esta variable (está casi al final del código), contiene el número de cuentas atrás que se tendrán que crear.

$hores[$x] => esta variable (array) contiene el número de horas para cada cuenta atras, empezando por $x = 1.

$minuts[$x] => lo mismo pero en minutos

$segons[$x] => lo mismo en segundos ;)


Y para mostrar la cuenta atrás por pantalla:::::



echo "<span id='coso".$numero."'></span>";

$numero => esta variable es el número de cuenta atrás al que haceis referencia, recordad que empieza desde el 1 hasta el número de la variable $nombremm





Código:
<script>

#
/* código de Douglas Crockford, para crear un objeto que hereda de otro
#
#
*/

if (typeof Object.create !== 'function') {
    Object.create = function (o) {
        function F() {}
        F.prototype = o;
        return new F();
    };
}
var cuentaAtras = {
    intervalID : 0,
    horas : 0,
    minutos : 0,
    segundos : 0,
    inicializar : function(horas, minutos, segundos) {
        this.horas = horas;
        this.minutos = minutos;
        this.segundos = segundos;
    },
    restar : function() {
        if(this.segundos > 0) {
            this.segundos--;
        } else{
            if (this.minutos > 0) {
                this.segundos = 59;
                this.minutos--;
            } else {
                if(this.horas > 0) {
                    this.minutos = 59;
                    this.horas--;
                }
            }
        }
    },
    mostrar : function(nodo) {
        if ( (this.horas === this.minutos) && (this.minutos == this.segundos) && (this.segundos == 0) ) {
            this.terminado(nodo);
        } else {
            var tiempo = [ this.horas, this.minutos, this.segundos ];
            for (i=0; i < 3; i++) {
                if (tiempo[i] < 10) tiempo[i] = "0" + tiempo[i];
            }
            nodo.innerHTML = tiempo.join(':');
        }
    },
    terminado : function(nodo) {
        nodo.innerHTML = 'TERMINADO';
		
		
		
		
		
		
        window.clearInterval(this.intervalID);
    }
};
<?php
echo "</script>";
	for($x=0;$x<$nombremm+1;$x++)
	{
	echo "<script>";
?>
<?php echo "var cuentaAtras".$x." = Object.create(cuentaAtras);"; ?>
cuentaAtras<?php echo $x; ?>.inicializar(<?php echo $hores[$x]; ?>, <?php echo $minuts[$x]; ?>, <?php echo $segons[$x]; ?>);
cuentaAtras<?php echo $x; ?>.intervalID = setInterval(function() {
    cuentaAtras<?php echo $x; ?>.mostrar(document.getElementById('coso<?php echo $x; ?>'));
    cuentaAtras<?php echo $x; ?>.restar();
}, 1000);
</script>
<?php
 }
 ?>


Un saludo!