Foros del Web » Programando para Internet » Javascript »

función cuenta atras de javascript

Estas en el tema de función cuenta atras de javascript en el foro de Javascript en Foros del Web. Buenas, estoy teniendo problemas con una función que encontre para hacer una cuenta atras en javascript. Explico brevemente lo que necesito hacer y lo que ...
  #1 (permalink)  
Antiguo 10/12/2012, 11:56
 
Fecha de Ingreso: septiembre-2012
Ubicación: Pontevedra
Mensajes: 48
Antigüedad: 12 años, 3 meses
Puntos: 2
función cuenta atras de javascript

Buenas, estoy teniendo problemas con una función que encontre para hacer una cuenta atras en javascript.

Explico brevemente lo que necesito hacer y lo que tengo.
Quiero crear una promoción que dure 24 horas desde su inicio. Para ello desde el panel de configuración coge la fecha en la que se crea la promoción, le añade 24 horas y la guarda en la base de datos, y activa la promoción 24 horas.

Desde el panel de promociones mi intención era que recogiera ese tiempo, y mostrara el tipico contador marcha atras de Queda X tiempo para que finalice la promoción, viendo como el contador va marcha atras.

Encontre una función para hacer ese contador, y que calcule en función de la fecha de finalización, el tiempo restante, para poner en el contador. Lo que no soy capaz de encontrar es la manera de hacer esa fecha de finalización la coja en función de los datos que tengo en la base de datos.

Copio el codigo que tengo aqui, y al final pongo unas anotaciones.

Código HTML:
<script type="text/javascript">

function calcula(id, date){
var date = new Date('2012', '11', '11', '21', '45', '50')
var hoy = new Date()
var dias = 0
var horas = 0
var minutos = 0
var segundos = 0

if (date>hoy){
var diferencia=(date.getTime()-hoy.getTime())/1000
dias=Math.floor(diferencia/86400)
diferencia=diferencia-(86400*dias)
horas=Math.floor(diferencia/3600)
diferencia=diferencia-(3600*horas)
minutos=Math.floor(diferencia/60)
diferencia=diferencia-(60*minutos)
segundos=Math.floor(diferencia)

if (minutos < 10)
{
minutos = '0' + minutos
}
if (segundos < 10)
{
segundos = '0' + segundos
}
document.getElementById(id).innerHTML='Queda ' + dias + ' Dia ' + horas + ':' + minutos + ':' + segundos
if (dias>0 || horas>0 || minutos>0 || segundos>0){
setTimeout("calcula(\"" + id + "\")",1000)
}
}
else{
//document.write('Finalizada <br>')
document.getElementById('restante').innerHTML='Queda ' + dias + ' Dia ' + horas + ':' + minutos + ':' + segundos
}

}

</script>
    </head>
    <script type="text/javascript">
    var date = new Date('2012', '11', '11', '21', '45', '50')
    </script> 
    <body onload="calcula('contador', date)">

        <div id="generalp">
            <?php include("cabecero.php"); ?>
            <div id='contador'></div>
        </div> 

Como podeis ver la variable de fin de fecha "date" la defino directamente en el javascript poniendo yo unos varoles fijos, esos me gustaria poder cargarlos de la base de datos.

la variable date, en este codigo que encontre la define 2 veces, una dentro del head y otra fuera. Me extraño asi que elimine una de las 2, pero falla en ambos casos. Si elimino la primera, la función carga, me calcula el tiempo que queda, pero este se queda quieto, sin correr. Si elimino la segunda directamente no me carga nada en la función.

Cualquier ayuda o sugerencia sera bienvenida.

Gracias por anticipado!
  #2 (permalink)  
Antiguo 16/12/2012, 10:00
 
Fecha de Ingreso: septiembre-2010
Ubicación: Corrientes - Argentina
Mensajes: 37
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: función cuenta atras de javascript

Nada impide que hagas una consulta con php a la base de datos e imprimas el valor de la fecha dentro del javascript:

Ejemplo:
Código:
var fechaFinalizacion=<?php echo $fechaFinalizacion; ?>;
recuerda que el php escribe documentos html incluyendo los script que hagas en el mismo documento.
__________________
Si esta vida te da la espalda, siempre puede tocarle el c...

Etiquetas: atras, html, php
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 13:08.