Página 2
Evaluar expresiones XPath en cualquier navegador
Página 3
Índice
Ver este artículo en español 
 

Obtener la posición absoluta de cualquier elemento HTML

Alexander Hristov

El siguiente fragmento de código proporciona la posición absoluta de cualquier elemento HTML del árbol DOM. Es bastante útil para situar capas emergentes encima de un elemento concreto - ya sea en forma de ayudas o para menús.

La esencia de la función son las propiedades offsetLeft y offsetTop, que devuelven la posición relativa de un elemento respecto a su contenedor, que a su vez está almacenado en offsetParent.

 

position.js
 
function getAbsoluteElementPosition(element) {
  if (typeof element == "string")
    element = document.getElementById(element)
    
  if (!element) return { top:0,left:0 };
  
  var y = 0;
  var x = 0;
  while (element.offsetParent) {
    x += element.offsetLeft;
    y += element.offsetTop;
    element = element.offsetParent;
  }
  return {top:y,left:x};
}

 

La función acepta como parámetro o bien el ID de un elemento (una cadena), o bien el propio elemento como objeto. El valor de retorno es también un objeto con dos propiedades : top y left, que contienen la posición buscada.

Un ejemplo de uso podría ser el siguiente:

 
function test() {
  var elemento = document.getElementById('miboton');
  var pos = getAbsoluteElementPosition(elemento)
  
  alert("top="+pos.top+" left="+pos.left)
}

 

Pulsa   para probar la función "en vivo".

Probado con:
Tested with IE
6.0+
Tested with Firefox
1.5+
Tested with Opera
9.0+
   


Código Fuente



 

Comentarios

04/04/2008 a las 13:25 Enviado por Monty
dentro del if cambia campo == 'number' por evaluar == 'number' campo nunca sera number excepto que pongas la palabra number explicitamente dentro del campo de texto.
14/12/2007 a las 13:18 Enviado por Natalia
Hola a todos, estoy empezando con el javascript y os escribo para ver si podríais ayudarme con una dudilla que tengo. Allá va!! Yo mento datos en un input="text" y al dar al boton me ejecute una funcion que me alerte si el valor que he metido en el campo de texto es numerio o un string. Lo estoy intentando un typeof y no me sale, es te es el codigo: <html> <head> <script language="JavaScript"> function pp() { var campo = document.form1.texto.value var evaluar = typeof(campo); if (campo == 'number'){ alert("es un number"); }else{ alert("kk"); } } </script> </head> <body > <form name="form1"> <input type="text" name="texto" value=""> <input type="button" onclick="pp();"> </form> </body> </html> Muchas gracias pos compartir vuestra sabiduría
28/08/2007 a las 17:27 Enviado por Yamil
Sos un grande, estube horas buscando esto!!!, no hay tutorial como alguien que sabe como vos! Mil GRacias ! Saludos desde Argentina :)
17/07/2007 a las 21:30 Enviado por Jesus
Gracias pana me funciona bien.
05/07/2007 a las 15:36 Enviado por kike
Gracias, voy a ver si me funciona, parece sencillo.
31/03/2007 a las 15:06 Enviado por anonymous
Esto es muy útil, lo demandaba para un monton de cosas. Muchas gracias.
19/03/2007 a las 18:34 Enviado por Sebastian
Muchas gracias, me vino muy bien. Saludos, Sebastian (Argentina)
22/02/2007 a las 17:46 Enviado por César
Muchas gracias por el ejemplo.. esta muy claro... te agradezco que compartas estas cosas con los demás mortales... muy agradecido me despido... hasta pronto.. from Chile...

 

Añadir Comentario

Nombre (opcional)
EMail (opcional, no se muestra)

Texto