Ver Mensaje Individual
  #6 (permalink)  
Antiguo 18/02/2011, 19:07
Avatar de _cronos2
_cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 14 años, 5 meses
Puntos: 310
Respuesta: Saber posición absoluta de un elemento

Bueno tengo dos opciones, pero no sé cuál es la correcta, porque a veces devuelven lo mismo y a veces diferente:
Código Javascript:
Ver original
  1. posicion : function(donde){
  2.    var left = this.offsetLeft, top = this.offsetTop, padre = this.offsetParent, body = P(document.body);
  3.    while(!/(body|html)/i.test(padre.tagName)){
  4.     left += padre.offsetLeft;
  5.     top += padre.offsetTop;
  6.     padre = padre.offsetParent;
  7.    }
  8.    return {
  9.     'left' : left,
  10.     'right' : body.getStyle('width').match(/\d+/)[0]-left,
  11.     'top' : top,
  12.     'bottom' : body.getStyle('height').match(/\d+/)[0]-top
  13.    }[donde];
  14.   },
y
Código Javascript:
Ver original
  1. posicion : function(donde){
  2.    var left = this.offsetLeft, top = this.offsetTop, padre = this.parentNode, body = P(document.body);
  3.    while(!/(body|html)/i.test(padre.tagName)){
  4.     left += padre.offsetLeft;
  5.     top += padre.offsetTop;
  6.     padre = padre.parentNode;
  7.    }
  8.    return {
  9.     'left' : left,
  10.     'right' : body.getStyle('width').match(/\d+/)[0]-left,
  11.     'top' : top,
  12.     'bottom' : body.getStyle('height').match(/\d+/)[0]-top
  13.    }[donde];
  14.   },
En principio la que me funciona 'mejor' es la primera, con offsetParent (con el add-on Web Developer de FF averiguo el left y lo comparo con el resultado), pero me gustaría saber por qué no se puede usar parentNode.
Saludos :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