Foros del Web » Programando para Internet » Javascript »

Ayuda con aplicación de objetos "personalizados&qu

Estas en el tema de Ayuda con aplicación de objetos "personalizados&qu en el foro de Javascript en Foros del Web. Buenas: Estoy utilizando el medio de creación de objetos personalizados que tiene javascript. Para poder manejar capas en DHTML más rapido. Se ma ha presentado ...
  #1 (permalink)  
Antiguo 03/08/2002, 23:58
 
Fecha de Ingreso: febrero-2002
Ubicación: Cali
Mensajes: 70
Antigüedad: 22 años, 3 meses
Puntos: 0
Ayuda con aplicación de objetos "personalizados&qu

Buenas:

Estoy utilizando el medio de creación de objetos personalizados que tiene javascript. Para poder manejar capas en DHTML más rapido. Se ma ha presentado un problema cuando quiero utilizar el "setTimeout('',x)". Para poder explicar que es, escribo en ejemplo generalizado a "internet explorer".

function generar(div)
{
this.estilo = document.all[div].style;
this.mostrar = mostrar();
this.tiempo = tiempo();
}

function mostrar()
{ this.estilo.visibility="visible" }

function tiempo()
{ setTimeout("this.mostrar",100); }


Y AL LLAMAR EL OBJETO:
capa = new generar("capaID");

Y EN EL HTML:
<div id="capaID" style:visibility:hidden">texto</div>

El problema que tengo es que si quiero activar la funcíón "tiempo()", se genera error, ya que la función dentro del setTimeout es un objeto, de que otra forma puedo llenar los parametros de "setTimeout()", para así poder lograr que la capa se muestre despues de cierto tiempo?. O si hay otra forma?. (se debe poder pasar los datos)

Sé que tal vez no he sido muy claro, pero si alguna persona ya ha manejado objetos personalizados creo que podrá entender.

Muchas gracias.

<p lign="right"><font color="darkblue">Goblin...[/CODE]</p>
  #2 (permalink)  
Antiguo 04/08/2002, 10:55
pny
 
Fecha de Ingreso: marzo-2002
Ubicación: Barcelona
Mensajes: 33
Antigüedad: 22 años, 2 meses
Puntos: 0
Re: Ayuda con aplicación de objetos "personalizados&qu

hola!

lo que te ocurre es que al hacer referencia al objeto dentro del setTimeout (mediante el this) este ha perdido la referencia al objeto que apuntaba. Lo que tendrías que hacer es tener una propiedad que hiciera referencia al propio objeto y que se asignara en el momento de la creación; tendrías que poner algo así: eval(this.obj + &quot;=this&quot;);
Y ahora a la hora de usar los timeouts tendrías que usar dicha referencia: setTimeout(this.obj+&quot;.metodo()&quot;, tiempo);

Espero haberte ayudado.. saludos

pny
  #3 (permalink)  
Antiguo 04/08/2002, 13:34
 
Fecha de Ingreso: febrero-2002
Ubicación: Cali
Mensajes: 70
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: Ayuda con aplicación de objetos "personalizados&qu

Hola. Muchas gracias. Aun no he podido hacerlo, la verdad creo que no te he entendido. Intenté una nueva forma, con un BLUCLE.

seg=0;
while (seg!=1)
{
setTimeOut(&quot;seg=1&quot;,1000);
}
this.tiempo();

sien embargo, no me funciona. Se genera ERROR. Ya he intentado con varias formas de bucles, y sin resultado.

De todas formas, muchas gracias.


<p lign="right"><font color="darkblue">Goblin...[/CODE]</p>
  #4 (permalink)  
Antiguo 04/08/2002, 13:43
 
Fecha de Ingreso: febrero-2002
Ubicación: Cali
Mensajes: 70
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: Ayuda con aplicación de objetos "personalizados&qu

o mas bien:

seg=0;
while (seg!=1)
{
setTimeout(&quot;seg=1&quot;,1000);
}
this.mostrar;

Que es lo mismo


<p lign="right"><font color="darkblue">Goblin...[/CODE]</p>
  #5 (permalink)  
Antiguo 05/08/2002, 10:51
 
Fecha de Ingreso: febrero-2002
Ubicación: Cali
Mensajes: 70
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: Ayuda con aplicación de objetos "personalizados&qu

Pny tenias razon.

Hay que pasar el objeto a una variable en el momente de la creació, justo como el ejemplo que das. El problema es que al usar una varible como &quot;this.obj&quot; y en setTimeout(this+&quot;.obj&quot;); GENERA problema por el mismo this.

La respuesta es NO usarlo. Así quedaría en mi ejemplo:

function mostrar(varID)
{ varID.visibility=&quot;visible&quot; }

function tiempo()
{
temp = this.estilo;
setTimeout(&quot;mostrar(temp)&quot;,100);
}

y simplemente se llamaraía a:
this.tiempo;

Eso es todo, algo sumanete simple. ¿Es claro?.
(Esto es por si alguien no lo sabia)
En otras palabras, para temorizar un &quot;metodo&quot; en un objeto hay que crear una variable temporal a la que se le asigne las propiedades del objeto y entonces en el &quot;setTimeout&quot; llamar a la función que utilize dicha variable.

Muchas gracias.

<p lign="right"><font color="darkblue">Goblin...[/CODE]</p>
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 07:24.