Foros del Web » Programando para Internet » Javascript »

¿Como apunto un elemento desde una variable de un objeto?

Estas en el tema de ¿Como apunto un elemento desde una variable de un objeto? en el foro de Javascript en Foros del Web. Bueno, la cosa es que recien estoy empezando con los objetos, y como que nada que ver con lo que hacía antes, es decir, arrays ...
  #1 (permalink)  
Antiguo 16/11/2009, 12:29
 
Fecha de Ingreso: mayo-2008
Ubicación: En la guarida del mal, tratando de conquistar el mundo
Mensajes: 174
Antigüedad: 16 años
Puntos: 2
Pregunta ¿Como apunto un elemento desde una variable de un objeto?

Bueno, la cosa es que recien estoy empezando con los objetos, y como que nada que ver con lo que hacía antes, es decir, arrays multidimensionales a full xDDD.

Bueno, este es el objeto que tengo:

Código:
function circle(radio, positionX, positionY)
{
	
	this.ra = radio;
	this.di = radio*2;
	this.element = document.body.appendChild(document.createElement("div"));
	this.element.style.position = "absolute";
	this.element.style.left = positionX+"px";
	this.element.style.top = positionY+"px";
	this.element.style.width = radio*2+"px";
	this.element.style.height = radio*2+"px";
	

	this.posX = this.element.style.left; // <--- Como hago aca?
	this.posY = this.element.style.top; // <--- Y aca xD

	
	this.element.style.backgroundImage = "url(circle.png)";
}
El código que está marcado en rojo xD. Como hago para que despues pueda editar el left y el top del objeto usando this.posX y this.posY?

Se hace llamando a una función? Como? Porque lo que se me ocurrió fue esto:

Código:
this.posX = function(){
       this.element.style.left = ???+"px"; 
}
Pero como le digo que quiero el valor al cual lo estoy igualando? xDDD
Y cuando lo "piden", como hago para "return" el valor de parseInt(this.element.style.left)
  #2 (permalink)  
Antiguo 16/11/2009, 12:48
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: ¿Como apunto un elemento desde una variable de un objeto?

No entendí muy bien lo que preguntas, si sólo se trata de acceder a esa propiedad del objeto basta con:
Código Javascript:
Ver original
  1. objeto.element.style.left = objeto.postX + "px";
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 16/11/2009, 12:59
 
Fecha de Ingreso: mayo-2008
Ubicación: En la guarida del mal, tratando de conquistar el mundo
Mensajes: 174
Antigüedad: 16 años
Puntos: 2
Pregunta Respuesta: ¿Como apunto un elemento desde una variable de un objeto?

Cita:
Iniciado por David Ver Mensaje
No entendí muy bien lo que preguntas, si sólo se trata de acceder a esa propiedad del objeto basta con:
Código Javascript:
Ver original
  1. objeto.element.style.left = objeto.postX + "px";
Si, pero lo que yo quiero es que mediante objeto.posX acceda directamente a objeto.element.style.left, ya que queda mas limpio xD.
  #4 (permalink)  
Antiguo 16/11/2009, 13:03
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: ¿Como apunto un elemento desde una variable de un objeto?

En ese caso sería mejor crear funciones getter y setter:
Código Javascript:
Ver original
  1. objeto.setPosX = function(posx) {
  2.     this.element.style.left = posx + "px";
  3. }
  4. objeto.getPosX = function() {
  5.     return this.element.style.left;
  6. }
Código Javascript:
Ver original
  1. objeto.setPosX(15);
  2. alert(objeto.getPosX());
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 16/11/2009, 13:24
 
Fecha de Ingreso: mayo-2008
Ubicación: En la guarida del mal, tratando de conquistar el mundo
Mensajes: 174
Antigüedad: 16 años
Puntos: 2
Sonrisa Respuesta: ¿Como apunto un elemento desde una variable de un objeto?

Cita:
Iniciado por David Ver Mensaje
En ese caso sería mejor crear funciones getter y setter:
Código Javascript:
Ver original
  1. objeto.setPosX = function(posx) {
  2.     this.element.style.left = posx + "px";
  3. }
  4. objeto.getPosX = function() {
  5.     return this.element.style.left;
  6. }
Código Javascript:
Ver original
  1. objeto.setPosX(15);
  2. alert(objeto.getPosX());
Y no se puede hacer de tal manera que apunte directamente al otro objeto? =/
  #6 (permalink)  
Antiguo 16/11/2009, 13:30
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Respuesta: ¿Como apunto un elemento desde una variable de un objeto?

¿Y tienes que citar el mensaje entero para contestar?
  #7 (permalink)  
Antiguo 16/11/2009, 13:32
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: ¿Como apunto un elemento desde una variable de un objeto?

Hasta donde sé, no se puede.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 16/11/2009, 14:00
 
Fecha de Ingreso: mayo-2008
Ubicación: En la guarida del mal, tratando de conquistar el mundo
Mensajes: 174
Antigüedad: 16 años
Puntos: 2
De acuerdo Respuesta: ¿Como apunto un elemento desde una variable de un objeto?

Cita:
Iniciado por David Ver Mensaje
Hasta donde sé, no se puede.
Bueno, no importa, tonces hago una función para poner valores y otra para sacarlos :P.

Ahora tengo otro problema... xD

Como accedo a "this" desde las funciones anidadas dentro del objeto?
Ejemplo:

Código:
function circle(radio, positionX, positionY)
{
	
	this.ra = radio;
	this.element = document.body.appendChild(document.createElement("div"));
	this.element.style.position = "absolute";
	this.element.style.left = positionX+"px";
	this.element.style.top = positionY+"px";
	this.element.style.width = radio*2+"px";
	this.element.style.height = radio*2+"px";
	
	this.speed = function(xSpeed, ySpeed, frames)
	{
		clearInterval(this.speedInterval);
		function loop()
		{
			this.element.style.left = parseInt(this.element.style.left) + xSpeed + "px";
			this.element.style.top = parseInt(this.element.style.top) + ySpeed + "px";
		}
		this.speedInterval = setInterval(loop, frames);
	}
	
	this.move = function(posX, posY)
	{
		this.element.style.left = posX+"px";
		this.element.style.top = posY+"px";
	}
	
	//document.backgroundImage = "url(circle.png)";
	img = this.element.appendChild(document.createElement("img"));
	img.src = "circle.png";
	img.style.width = "100%";
	img.style.height = "100%";
}
Me da error en donde está en rojo, me dice que "this.element" no está definido :S

EDITO: Bueno, no se si será la manera correcta de solucionarlo, pero creé un elemento antes de la función "loop" (e = this) y dentro de la función loop usé ese elemento, :P.

Gracias por todo, no quiero hacer mas preguntas que ya soy insoportable xDDD.
  #9 (permalink)  
Antiguo 16/11/2009, 21:03
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: ¿Como apunto un elemento desde una variable de un objeto?

Sólo apuntar que los setters y getters sí existen (vía los métodos mágicos __defineGetter__ y __defineSetter__ o los operadores set y get), pero el querido explorer no los soporta, así que ajo y agua.
De todas maneras dejo un ejemplo y un par de enlaces:
Código PHP:
<!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></title>
<
script>
function 
circle(radiopositionXpositionY)
{
    
    
this.ra radio;
    
this.di radio*2;
    
this.element document.body.appendChild(document.createElement("div"));
    
this.element.style.position "absolute";
    
this.element.style.left positionX+"px";
    
this.element.style.top positionY+"px";
    
this.element.style.width radio*2+"px";
    
this.element.style.height radio*2+"px";
    
this.element.style.backgroundColor "#000";
}
try{
    
circle.prototype={set posX (x){this.element.style.left=x+'px';}}//operador 
    
circle.prototype.__defineSetter__('posY',function(x){this.element.style.top=x+'px';});//método mágico
}catch(e){
    
alert('soy explorer');
}
onload=function(){
var 
c=new circle(501010);
c.posX=500;
c.posY=200;
}
</script>
</head>

<body>
</body>
</html> 
http://www.robertnyman.com/javascrip...rs-and-setters
https://developer.mozilla.org/en/Cor...rs_and_Setters
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 19:46.