Foros del Web » Programando para Internet » Javascript »

problema con setTimeout() al enviar un Id dentro de la funcion...

Estas en el tema de problema con setTimeout() al enviar un Id dentro de la funcion... en el foro de Javascript en Foros del Web. Tengo estos script a modo de ejercicio... el problema es que se ejecuta solo 2 veces y la 3ra ves arroja un error javascript... Errores ...
  #1 (permalink)  
Antiguo 10/07/2009, 07:04
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 2 meses
Puntos: 20
Pregunta problema con setTimeout() al enviar un Id dentro de la funcion...

Tengo estos script a modo de ejercicio...

el problema es que se ejecuta solo 2 veces y la 3ra ves arroja un error javascript...

Errores de script de página web:

Agente de usuario: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; InfoPath.2; .NET CLR 2.0.50727)
Fecha: Fri, 10 Jul 2009 12:09:12 UTC


Mensaje: Expected ']'
Línea: 1
Carácter: 16
Código: 0
URI: http://localhost/test/relojes.php

alguna idea de como podria solucionar esto?

Código HTML:
<!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>Documento sin t&iacute;tulo</title>
<script type="text/javascript">
function fnHide(id){
   window.setTimeout("fnHide(" + id + ")", 1000);
   fnHide2(id);
}
function fnHide2(sID){
   var o = eval(sID);
   o.innerHTML += "cualquiercosa";
}
</script>

</head>

<body>
<div id="algo" style="display:;">algo</div>
<input type="button" value="Count Down" 
    id="oHideButton" onclick="fnHide('algo')">
</body>
</html> 
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
  #2 (permalink)  
Antiguo 10/07/2009, 07:13
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: problema con setTimeout() al enviar un Id dentro de la funcion...

¿Por qué eval()? Para obtener la referencia al elemento debes usar document.getElementById()
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 10/07/2009, 07:35
 
Fecha de Ingreso: enero-2008
Mensajes: 614
Antigüedad: 16 años, 4 meses
Puntos: 57
Respuesta: problema con setTimeout() al enviar un Id dentro de la funcion...

Como te dijeron, cambia el eval por document.getElementById. (aunque igual puede seguir funcionando si lo dejas).

La primer vez que llamas fnHide (cuando presionas el boton) le estas enviando una cadena (algo) como parametro a la funcion. Pero cuando creas el setTimeout, le estas enviando un objeto. Cuando se ejecuta el setTimeout en realidad estas ejecutando

Código:
fnHide(algo)
Asi, se supone que algo es una variable u objeto. Lo que tienes que hacer es mandarlo como cadena:

Código:
fnHide('algo')
Esto se haria asi:

Código:
window.setTimeout("fnHide('" + id + "')", 1000);
Si necesitas que tu funcion se ejecute cada cierto tiempo, puedes utilizar setInterval para que no tengas que estar generando un nuevo setTimeout cada vez.

Última edición por posman; 10/07/2009 a las 09:07
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 06:44.