Si vous ne souhaitez pas utiliser jQuery vous pouvez copier/coller à partir d'ici (code LGPL); http://code.google.com/p/ra-ajax/source/browse/trunk/Ra/Js/Ra.js
L'endroit à rechercher est la fonction "absolutize" à la ligne no. 220 qui calcule récursivement la taille des "nœuds ancêtres" dans la boucle while.
Collé ici pour des références;
var valueT = this.offsetTop || 0;
var valueL = this.offsetLeft || 0;
var el = this.offsetParent;
while (el) {
Ra.extend(el, Ra.Element.prototype);
if(el.tagName == 'BODY') {
break;
}
var pos = el.getStyle('position');
if(pos == 'relative' || pos == 'absolute') {
break;
}
valueT += el.offsetTop || 0;
valueL += el.offsetLeft || 0;
el = el.offsetParent;
}
« ce » ici est un élément DOM ...
Cependant, je pense que ce que vous avez est absolument positionné à l'intérieur divs autre div avec position: relative dans ce cas, vous pouvez simplement utiliser;
var y = parseInt(myElement.style.top, 10);
var x = parseInt(myElement.style.left, 10);
qui sera ordres de grandeur plus rapide, puis faire le « décalage boucles » ...
est là quelque chose comme ça pour obtenir la valeur de droite ou à gauche? – www139