Foros del Web » Programando para Internet » Javascript »

Problema con funcion dentro de objeto.

Estas en el tema de Problema con funcion dentro de objeto. en el foro de Javascript en Foros del Web. Hola a todos, estoy acá porque tuve un problema usando una función dentro de un objeto estilo JSON. El punto es este : @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); ...
  #1 (permalink)  
Antiguo 05/02/2012, 14:56
 
Fecha de Ingreso: septiembre-2011
Mensajes: 52
Antigüedad: 12 años, 7 meses
Puntos: 0
Exclamación Problema con funcion dentro de objeto.

Hola a todos, estoy acá porque tuve un problema usando una función dentro de un objeto estilo JSON.

El punto es este :

Código Javascript:
Ver original
  1. window.fade ={
  2.   color : 0,
  3.   suma : 10,
  4.   fadeIn : function aparecer(){
  5.     var obj = document.getElementById('escondido');
  6.     obj.style.display = "block";
  7.     this.color += this.suma;
  8.     if (!(this.color>=110)){
  9.       obj.style.filter = 'alpha(opacity='+this.color+')';
  10.       obj.style.opacity = this.color /100;
  11.       obj.style.MozOpacity = this.color /100;
  12.       obj.style.KHTMLOpacity = this.color /100;
  13.       window.setTimeout ([error]"this.fadeIn();"[/error], 100);
  14.     }
  15.   }
  16. };

El área en donde consta mi problema esta resaltado entre [error] y [/error], para aclarar el problema en sí.,

Cuando llamo al objeto y a la funcion así:
Código Javascript:
Ver original
  1. fade.fadeIn();

Sale un error desde consola así:
Uncaught TypeError: Object [object DOMWindow] has no method 'fadeIn'

Y si lo pongo así:
Código Javascript:
Ver original
  1. fade.fadeIn.aparecer();

Me sale este error:
TypeError: Object has no method 'aparecer'

Entonces traté de modificar el código en sí, y lo puse así:
Código Javascript:
Ver original
  1. window.fade ={
  2.   color : 0,
  3.   suma : 10,
  4.   fadeIn : function aparecer(){
  5.     var obj = document.getElementById('escondido');
  6.     obj.style.display = "block";
  7.     this.color += this.suma;
  8.     if (!(this.color>=110)){
  9.       obj.style.filter = 'alpha(opacity='+this.color+')';
  10.       obj.style.opacity = this.color /100;
  11.       obj.style.MozOpacity = this.color /100;
  12.       obj.style.KHTMLOpacity = this.color /100;
  13.       window.setTimeout ("aparecer();", 100);
  14.     }
  15.   }
  16. };

Entonces lo llamo así:
Código Javascript:
Ver original
  1. fade.fadeIn();

Y funciona, solo que el setTimeout NO funciona, ya que me sale este error:
Uncaught ReferenceError: aparecer is not defined

¿Alguien puede darme sugerencias?
Para ser más especifico, este script es para que cierto div, con display:none, y opacity: 0, se haga con display:block y que con el setTimeout se vaya haciendo cada vez del color más solido, pero ese setTimeout NO funciona, eso es lo que necesito.

Espero haber sido prolijo y especifico, muchas gracias de antemano.

Última edición por tomirammstein; 05/02/2012 a las 15:01 Razón: HIGHLIGHT con texto enriquecido.
  #2 (permalink)  
Antiguo 05/02/2012, 16:24
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Basandome en el primer snippet, lo que te falla es el this. Primero de todo, no uses un string dentro de un setTimeout, usa un handler! Y despues, revisa que el this dentro de la funcion puede no ser el mismo this en el setTimeout...
Saludos (:
  #3 (permalink)  
Antiguo 05/02/2012, 17:23
 
Fecha de Ingreso: septiembre-2011
Mensajes: 52
Antigüedad: 12 años, 7 meses
Puntos: 0
Exclamación Respuesta: Problema con funcion dentro de objeto.

Cita:
Iniciado por _cronos2 Ver Mensaje
Basandome en el primer snippet, lo que te falla es el this. Primero de todo, no uses un string dentro de un setTimeout, usa un handler! Y despues, revisa que el this dentro de la funcion puede no ser el mismo this en el setTimeout...
Saludos (:
¿Podrías darme el ejemplo, por favor?
Muchas gracias.
  #4 (permalink)  
Antiguo 06/02/2012, 00:35
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Problema con funcion dentro de objeto.

A ver así:
Código Javascript:
Ver original
  1. window.fade ={
  2.   ...
  3. * fadeIn : function(){
  4. * * ...
  5. * * if (this.color <= 110){
  6. * * * ...
  7. * * * window.setTimeout (this.fadeIn, 100);
  8. * * }
  9. * }
  10. };
Saludos (:
Edit: Shit, me salen asteriscos D:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
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 10:10.