Foros del Web » Programando para Internet » Javascript »

Ejecutar sentencia de un objeto desde setTimeout

Estas en el tema de Ejecutar sentencia de un objeto desde setTimeout en el foro de Javascript en Foros del Web. Hola, buenas Pues estoy programando con OO de JavaScript y dentro de un método de un objeto quiero ejecutar esta sentencia: this.capa_bus.style.visibility = 'hidden'; después ...
  #1 (permalink)  
Antiguo 25/07/2004, 18:10
Avatar de xcorpyon  
Fecha de Ingreso: junio-2004
Mensajes: 52
Antigüedad: 19 años, 11 meses
Puntos: 0
Ejecutar sentencia de un objeto desde setTimeout

Hola, buenas

Pues estoy programando con OO de JavaScript y dentro de un método de un objeto quiero ejecutar esta sentencia:
this.capa_bus.style.visibility = 'hidden'; después de que hallan transcurrido this.tiempo segundos.
(siendo... this.capa_bus = document.getElementById('mi_capa'); ...solo para dar mas detalles, aunq sin importancia)

Se hace con la función setTimeout(), pero no me sale. He probado muchas cosas, como por ejemplo:
setTimeout(eval(this.capa_bus.style.visibility+" = 'hidden'"),eval(this.tiempo)), pero no me da resultado.

Os agradecería que me ayudáseis. Gracias

Última edición por xcorpyon; 25/07/2004 a las 18:11
  #2 (permalink)  
Antiguo 25/07/2004, 18:53
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Hola xcorpyon:

Al setTimeout hay que pasarle como primer parámetro una cadena... el eval la convierte en sentencia, y como segundo parámetro un número de milisegundos...

Tal vez te sirva:

'setTimeout("document.getElementById(\"mi_capa\"). style.visibility = \"hidden\",parseInt(this.tiempo))'

Pero como puedes ver, el anidamiento de comillas puede complicar algo el código y su legibilidad, así que en ocasiones así, tal vez convenga crear una función con la instrucción deseada y evitar esos "líos"

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 25/07/2004, 19:10
Avatar de xcorpyon  
Fecha de Ingreso: junio-2004
Mensajes: 52
Antigüedad: 19 años, 11 meses
Puntos: 0
sigo con mi problema 'inicial'

Hola caricatos:

La sentencia que quisiera ejecutar es:this.capa_bus.style.visibility = 'hidden';

y como bien dices el primer argumento de la funcion setTimeout debe ser una cadena entonces ¿cómo podría transformarthis.capa_bus.style.visibility
en la cadena "document.getElementById('mi_capa').style.visibili ty"?

tendría que ser algo asi como:
setTimeout(this.capa_bus.to_string+".style.visibil ity = 'hidden'",eval(this.tiempo));
A ver si me puedes ayudar, gracias

Última edición por xcorpyon; 25/07/2004 a las 19:14
  #4 (permalink)  
Antiguo 25/07/2004, 19:23
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Hola otra vez:

Es algo complejo, ya que this suele ser la referencia al objeto actual, si capa_bus es un atributo del objeto que contiene la cadena, ¿porqué no pones directamente esa cadena?...

Como decía antes el entrecomillado complica un poco el tema, por eso tal vez te interese más usar otra función...

setTimeout("miFuncion("+ this.id + ")", this.tiempo); // tal vez sea mejor con parseInt ...

y en miFuncion(x)
document.getElementById(x).capa_bus...

La verdad es que es algo lioso el tema... si puedes poner algo más del código sería mejor.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 26/07/2004, 07:56
Avatar de xcorpyon  
Fecha de Ingreso: junio-2004
Mensajes: 52
Antigüedad: 19 años, 11 meses
Puntos: 0
parece ser q no era tan complicado...

esto es lo q me ha servido:

setTimeout("document.getElementById('"+this.capa_b us.id+"').style.visibility = 'hidden'"),this.tiempo);

(quizás no me expliqué bien, porque no era tan dificil)

Gracias por las molestias caricatos, y decirte q en estos casos uso las comillas " y ' (los 2 tipos validos), y de esta forma el uso de las comillas ya no es tan lioso, y queda muy bien (legible).

Bye
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:04.