Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/04/2012, 10:46
Kritik
(Desactivado)
 
Fecha de Ingreso: marzo-2012
Mensajes: 366
Antigüedad: 12 años, 1 mes
Puntos: 31
codigo misterioso

Estoy haciendo un cronómetro y bueno, aqui tengo varias dudas. La primera es con respecto a la función moverse para que un botón se mueva. Es una duda sin importancia, seguramente esté mal pueda la instrucción Math.random. (la he deshabilitado porque si no no funciona el crono)

La segunda es con respecto a @font-face. No se si funciona sin haber declarado qué tipo de documento es, pues lo mismo solo funciona con html5? No tengo ni idea, el caso es que no me coje el archivo de fuentes truetype.

Y la más importante, en la que más me ha hecho comerme la cabeza durante horas, e incluso habiendo sido revisado el código por mi profesora... ninguno de los 2 hemos llegado a la conclusión del fallo. Este cronómetro se reinicia solo al llegar a los 8 segundos. Misterioso.

<html>
<head>
<style type="text/css">
@font-face {font-family:"digiface";src:url(digiface.ttf);format("tr uetype");}
.caja1{font-size:80px;font-family:"digiface";color:white;background-color:black;}
</style>
<script language="JavaScript">
enmarcha=false;
centesimas=0;
segundos=0;
minutos=0;
var frecuencia
function marcha()
{
if (enmarcha==false)
{
enmarcha=true;
frecuencia=setInterval("contarparar()",10);
}
else
{
enmarcha=false;
clearInterval(frecuencia)
}
}
function contarparar()
{
if (enmarcha==true)
{
centesimas++;
if (parseInt(centesimas)<10)
{
centesimas=parseInt(centesimas);
centesimas="0"+centesimas;
}
if (parseInt(centesimas)==100)
{
centesimas=0;
segundos++;
}
if (parseInt(segundos)<10)
{
segundos=parseInt(segundos);
segundos="0"+segundos;
}
if (parseInt(segundos)==60)
{
segundos=0;
minutos++;
}
if (parseInt(minutos)<10)
{
minutos=parseInt(minutos);
minutos="0"+minutos;
}
if (parseInt(minutos)==60)
{
enmarcha=false;
clearInterval(frecuencia)
alert("Este cronómetro solo mide el tiempo hasta una hora.");
centesimas=0;
segundos=0;
minutos=0;
}
document.cronometro.pantalla.value=(minutos+":"+se gundos+":"+centesimas);
}
}
function recomenzar()
{
centesimas=0;
segundos=0;
minutos=0;
document.cronometro.pantalla.value="00:00:00";
}
/*function moverse()
{
if enmarcha==true
{
document.cronometro.pantalla.style.top=(Math.rando m()*500);
document.cronometro.pantalla.style.left=(Math.rand om()*500);
}
}*/
</script>
</head>
<body bgcolor=#99ff99>
<center>
<form name="cronometro" style="width:800px; height:500px; background-color:white;">
<center>
<h2>Mi super-Cronómetro de la muerte mortal</h2>
<input name="pantalla" class="caja1" value="00:00:00" size=5>
<br>
<input name="startstop" type=button value="Start / Stop" onClick="marcha();contarparar();" onMouseOver="moverse();">
<input name="a_cero" type=button value="Comenzar" onClick="recomenzar();">
</center>
</form>
</center>
</body>
</html>

---------------

Fíjense en la parte correspondiente a:

if (parseInt(segundos)<10)
{
segundos=parseInt(segundos);
segundos="0"+segundos;
}

Esto lo hago para que siempre me salgan 2 dígitos en los segundos aunque el número de segundos solo contenga 1 dígito.

Hemos probado a funcionar con 1 solo dígito... y el crono funciona correctamente. Sin embargo, poniendo esto para convertir los segundos a 2 dígitos cuando es necesario... resulta que el cronómetro se reinicia a los 8 segundos. (Y por qué a los 8?)