JavaScript - Problema al ejecutar función dentro de un objeto

 
Vista:

Problema al ejecutar función dentro de un objeto

Publicado por Yoandy Madrazo Gómez (5 intervenciones) el 16/03/2011 16:21:19
Hola a todos, les cuento mi problema, resulta que tengo un objeto el cual es para redimensionar cualquier objeto conque lo haya instanciado y dentro de este con un setInterval hacer el redimensionamiento fluido para que tenga buena estética, sería algo como lo que he visto hacer con jquery o scriptaculous pero no quiero usar ningún framework. Acá les dejo el código

function redimensionar(obj)
{
this.id_setInterval = 0;
this.nombre = obj;
this.encoge_ancho = function(nombre,valor)
{
this.nombre = nombre;
if(getDimensions(document.getElementById(this.nombre)).w > valor)
{
document.getElementById(this.nombre).style.width = (getDimensions(document.getElementById(this.nombre)).w - 10) + 'px';
}
else
window.clearInterval(this.id_setInterval);
}

this.encogeA = function(valor)
{
this.id_setInterval = window.setInterval("this.encoge_ancho("+valor+")", 5);
}
}

Resulta que cuando ejecuto el método encogeA me da error diciéndome que this.encoge_ancho no es una función, ya he tratado hacerlo de varias formas y nada.

Saludos, Yoandy
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Problema al ejecutar función dentro de un objeto(RESUELTO)

Publicado por Yoandy Madrazo Gómez (5 intervenciones) el 16/03/2011 21:49:47
Resulta que el problema estaba en las instancias ya que no puedo usar una instancia dentro de otra y también estaba mal la forma de ejecutar la función, acá dejo el código para el que lo necesite, es para modificar la altura y el alto de cualquier objeto que tenga un ID.

Cualquier duda contactarme,

Saludos, Yoandy

function redimensionar(obj)
{
this.id_setInterval_X = 0;
this.id_setInterval_Y = 0;
this.nombre = obj;
var self = this;
this.encoge_ancho = function(valor)
{
if(getDimensions(document.getElementById(self.nombre)).w > valor)
{
document.getElementById(self.nombre).style.width = (getDimensions(document.getElementById(self.nombre)).w - 10) + 'px';
}
else
{
window.clearInterval(self.id_setInterval_X);
}
}

this.agranda_ancho = function(valor)
{
if(getDimensions(document.getElementById(self.nombre)).w < valor)
{
document.getElementById(self.nombre).style.width = (getDimensions(document.getElementById(self.nombre)).w + 10) + 'px';
}
else
{
window.clearInterval(self.id_setInterval_X);
}
}

this.encoge_alto = function(valor)
{
if(getDimensions(document.getElementById(self.nombre)).h > valor)
{
document.getElementById(self.nombre).style.height = (getDimensions(document.getElementById(self.nombre)).h - 10) + 'px';
}
else
{
window.clearInterval(self.id_setInterval_Y);
}
}

this.agranda_alto = function(valor)
{
if(getDimensions(document.getElementById(self.nombre)).h < valor)
{
document.getElementById(self.nombre).style.height = (getDimensions(document.getElementById(self.nombre)).h + 10) + 'px';
}
else
{
window.clearInterval(self.id_setInterval_Y);
}
}

//Método para restar el ancho del objeto
this.encogeX = function(valor)
{
window.clearInterval(self.id_setInterval_X);
this.id_setInterval_X = window.setInterval(function(){self.encoge_ancho(valor)}, 5);
}

//Método para aumentar el ancho del objeto
this.agrandaX = function(valor)
{
window.clearInterval(self.id_setInterval_X);
this.id_setInterval_X = window.setInterval(function(){self.agranda_ancho(valor)}, 5);
}

//Método para restar el alto del objeto
this.encogeY = function(valor)
{
window.clearInterval(self.id_setInterval_Y);
this.id_setInterval_Y = window.setInterval(function(){self.encoge_alto(valor)}, 5);
}

//Método para aumentar el altoo del objeto
this.agrandaY = function(valor)
{
window.clearInterval(self.id_setInterval_Y);
this.id_setInterval_Y = window.setInterval(function(){self.agranda_alto(valor)}, 5);
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar