Foros del Web » Programando para Internet » Javascript »

ayuda con script de cuenta atras

Estas en el tema de ayuda con script de cuenta atras en el foro de Javascript en Foros del Web. Buenas hace tiempo me dieron un script para realizar una cuenta atras, cogiendo la data del servidor, y ahora me propongo implementearlo, y tengo algunas ...
  #1 (permalink)  
Antiguo 03/12/2007, 10:11
 
Fecha de Ingreso: octubre-2007
Mensajes: 203
Antigüedad: 16 años, 6 meses
Puntos: 0
ayuda con script de cuenta atras

Buenas hace tiempo me dieron un script para realizar una cuenta atras, cogiendo la data del servidor, y ahora me propongo implementearlo, y tengo algunas dudas.

el codigo es este:


Código PHP:
var inicio=false;

// este ajuste de hora no lo entiendo si solo quiero que el contador sume la date del servidor +tiempo esper

var ajustehora=0;
var ajusteminuto=0;
var ajustesegundo=0;
var ajustedia=0;
var ajustemes=0;
var ajusteano=0;

function relojear(dia,mes,ano,hora,minuto,segundo){
    
    // el plazo supongo que es el tiempo de espera date-final- date.ahora

        plazo=new Date();
    plazo.setDate(dia);
    plazo.setMonth(mes-1);
    plazo.setFullYear(ano);
    plazo.setHours(hora);
    plazo.setMinutes(minuto);
    plazo.setSeconds(segundo);
    
    if(!inicio){ 
        // aqui introduzco la hora del servidor en el objeto de tiempo serv_ahora
        
        serv_ahora=new Date();
        serv_ahora.setDate(<?php echo intval(date('j')) ?>);
        serv_ahora.setMonth(<?php echo intval(date('n')-1?>);
        serv_ahora.setFullYear(<?php echo intval(date('Y')) ?>);
        serv_ahora.setHours(<?php echo intval(date('H')) ?>);
        serv_ahora.setMinutes(<?php echo intval(date('i')) ?>);
        serv_ahora.setSeconds(<?php echo intval(date('s')) ?>);
        
        ahora=new Date(); 
               // aqui no entiendo porque a la date del servidor se le resta la date del navegador
        
        ajustedia=serv_ahora.getDate()-ahora.getDate();
        ajustemes=serv_ahora.getMonth()-ahora.getMonth();
        ajusteano=serv_ahora.getFullYear()-ahora.getFullYear();
        ajustehora=serv_ahora.getHours()-ahora.getHours();
        ajusteminuto=serv_ahora.getMinutes()-ahora.getMinutes();
        ajustesegundo=serv_ahora.getSeconds()-ahora.getSeconds();
    }
    
    horasinajuste=new Date();
    
    // tampoco entiendo este ajuste

        ahora=new Date();
    ahora.setDate(horasinajuste.getDate()+ajustedia);
    ahora.setMonth(horasinajuste.getMonth()+ajustemes);
    ahora.setFullYear(horasinajuste.getFullYear()+ajusteano);
    ahora.setHours(horasinajuste.getHours()+ajustehora);
    ahora.setMinutes(horasinajuste.getMinutes()+ajusteminuto);
    ahora.setSeconds(horasinajuste.getSeconds()+ajustesegundo);
    
    inicio=true;
    
    quedan=((plazo/1000)-(ahora/1000))+' segundos';
    
    if(ahora>=plazo)
        document.getElementById('status').innerHTML='plazo cumplido';
    else
        document.getElementById('status').innerHTML='restan '+quedan;
}
</script>

</head>
<body onload="setInterval('relojear(<?php echo intval(date('j')) ?>,<?php echo intval(date('n')) ?>,<?php echo intval(date('Y')) ?>,<?php echo intval(date('H')) ?>,<?php echo intval(date('i'))+1 ?>,<?php echo intval(date('s')) ?>)',1000)">
<div id="status"> </div>
</body>
</html>


Lo que yo quiero hacer es una cuenta atras del x tiempo de espera que posea un usuario.

Seria algo asi como date del servidor (las cuentas atras y los manejos de tiempo se hacen todos respecto la hora del servidor, que todos los usuarios conocen, su hora local es irrelevante) + tiempo de espera.

Una vez ese contador llegue a 0, ha de pasar x cosa. La verdad es que tampoco me convence mucho la forma de sacar el tiempo por pantalla de este codigo, yo ahi solo veo que saque los segundos restantes.

Bueno muchas gracias por vuestra ayuda y espero que me podais echar 1 mano o 2!! jeje

Saludos!!

PD: Todas mis dudas las he puesto como comentarios en el script.

PD2: Creo que el script que tengo que realizar es bastante mas sencillo que este:

Última edición por B4l4; 03/12/2007 a las 10:18
  #2 (permalink)  
Antiguo 03/12/2007, 13:51
 
Fecha de Ingreso: octubre-2007
Mensajes: 203
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: ayuda con script de cuenta atras

Alguien me echa una mano por favor?
  #3 (permalink)  
Antiguo 04/12/2007, 08:44
 
Fecha de Ingreso: octubre-2007
Mensajes: 203
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: ayuda con script de cuenta atras

Bueno he ido cambiando el codigo y modificandolo y al final me ha quedado esto:

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

// cojo la hora del servidor para saber la hora actualizada

h = H.getHours()
m = H.getMinutes()
s = H.getSeconds()
d = H.getDate()
mm = H.getMonth()
y = H.getFullYear()

// cojo la hora del servidor para sumarle la espera.
h_estatica = H.getHours()
m_estatica = H.getMinutes()
s_estatica = H.getSeconds()
d_estatica = H.getDate()
mm_estatica = H.getMonth()
y_estatica = H.getFullYear()

function laHora(){
	
	// hora del servidor
	H2 = new Date(y,d,mm,h,m,s+1)
	h = H2.getHours() ; h2 = h
	m = H2.getMinutes()  ; m2 = m
	s = H2.getSeconds()  ; s2 = s
	
	// espera he puesto estos valores para comprobar que vaya bien
	
	var horas_espera = 0
	var minutos_espera = 1
	var segundos_espera= 10	
	
	
       // Aqui tengo la hora del servidor en el momento en que hago la cuenta atras y le sumo la espera
      
       H_estatica = new Date (y_estatica,d_estatica,mm_estatica,h_estatica,m_estatica,s_estatica)
	
	horasF = H_estatica.getHours() + horas_espera
	minutosF = H_estatica.getMinutes() + minutos_espera
	segundosF = H_estatica.getSeconds() + segundos_espera
	
	// aqui recojo el tiempo de espera que se va recortando de la operacion hora servidor + espera - hora servidor_actualizada
	
	esperaH = horasF - H2.getHours(); esperaH2 = esperaH
	esperaM = minutosF - H2.getMinutes(); esperaM2 = esperaM
	esperaS = segundosF - H2.getSeconds(); esperaS2 = esperaS
	
	
	// esto es para controlar la salida
        if(esperaH<10){esperaH2= "0" + esperaH}
	if(esperaM<10){esperaM2 = "0" + esperaM}
	if(esperaS<10){esperaS2 = "0" + esperaS}
		
		document.getElementById('reloj').firstChild.nodeValue = "Cuenta Atras: " + esperaH2 + ":" + esperaM2+ ":" + esperaS2
	}
	onload = function(){laHora();setInterval('laHora()',1000)
}
</script> 

Bueno ahora vienen algunos problemas.

El primero es que cuando se printa la cuenta atras al llegar a 1 minuto 02 segundos pasa a 62 segundos, y luego cuando llega a 30 segundos, se vuelve loco y pone -1 minuto 60 sgundos... no entiendo el porque la verdad. Otro problema es como puede hacer que se pare en 00:00:00. Creo que es con la sentencia exit, pero aun no domino mucho el JS.

Por favor si veis algun error o sabeis que puedo estar haciendo mal echarme una manilla, gracias como siempre por vuestro tiempo, y saludos!!
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:46.