Foros del Web » Programando para Internet » Javascript »

Porque no imprime un dato esta funcion?

Estas en el tema de Porque no imprime un dato esta funcion? en el foro de Javascript en Foros del Web. <script language="JavaScript"> var TimeOut=60; function CountDown() { if (TimeOut > 0) { document.getElementById("tempo").innerHTML = TimeOut; TimeOut--; } else { document.getElementById("tempo").innerHTML = TimeOut; } setTimeout("CountDown()", 1000); ...
  #1 (permalink)  
Antiguo 25/09/2008, 21:29
 
Fecha de Ingreso: junio-2006
Mensajes: 126
Antigüedad: 17 años, 10 meses
Puntos: 0
Pregunta Porque no imprime un dato esta funcion?

<script language="JavaScript">
var TimeOut=60;
function CountDown() {
if (TimeOut > 0) {
document.getElementById("tempo").innerHTML = TimeOut;
TimeOut--;
}
else {document.getElementById("tempo").innerHTML = TimeOut; }
setTimeout("CountDown()", 1000);
}
CountDown();
</script>

Me gustaria saber por que no me imprime la variable TimeOut que es el contador en decremento de esta funcion lo que quiero es que se visualize en una capa.

la capa esta asi <div id="tempo"></div>
  #2 (permalink)  
Antiguo 26/09/2008, 03:41
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Porque no imprime un dato esta funcion?

Si eso está metido así tal cual en tu página, entonces la llamada a CountDown(); del final se está ejecutando antes de que la página esté completa. Entonces el DOM no está disponible. Y entonces el document.getElementById("tempo") no encuentra el <div> porque el DOM no está disponible. Entonces no puede escribir en él la primera vez. Además como intentas acceder a él pero en realidad no lo tienes, la función termina de forma imprevista y no se vuelve a ejecutar porque no se ejecuta el setTimeout.

¿Solución? La llamada a CountDown() la tienes que hacer cuando el DOM ya esté disponible. Así que hazla en el onload de la página, no ahí metida a saco.
  #3 (permalink)  
Antiguo 26/09/2008, 04:29
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Porque no imprime un dato esta funcion?

Exaxto lo que dice Venkman. Sólo agregar que el atributo language es obsoleto y no debe usarse, y que colocar la función entre comillas dentro del setTimeout tampoco es demasiado óptimo (equivale a un eval). Tampoco el condicional está del todo bien armado. Fijate así:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<
title>test</title>
<
script>
var 
TimeOut=60;
function 
CountDown() {
    if (
TimeOut){
        
TimeOut--;
        
setTimeout(CountDown1000);
    }
    
document.getElementById("tempo").innerHTML TimeOut;
}
onload=CountDown;
</script>
</head>
<body>
<div id="tempo"></div>
</body>
</html> 

Última edición por Panino5001; 26/09/2008 a las 05:13
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 21:49.