xy-Koordinaten eines Elements ermitteln

DataFox

Erfahrenes Mitglied
Hi Leute

ich habe eine Funktion mit der ich die xy-Koordinaten eines Elements ermitteln kann, was für Layout-Sachen sehr hilfreich sein kann. Na ja. Also das Ding sieht so aus:

Code:
<div id="infoMSG"></div>
<b style="position:absolute;top:200px;left:100px;"><i><u><div id="irgendeinelement" style="position:absolute;top:50;left:50;">irgend ein element</div></u></i></b>

<script type="text/javascript">
getElementCoords(document.getElementById('irgendeinelement'));

// X/Y Koordinaten eines Elements ermitteln
function getElementCoords(eo){
	if(eo){
		var coords = {x: 0, y: 0};
		var i = 0;
		var eo_original = eo;
		do {
			i++;
			if(eo.currentStyle){
				if(eo.currentStyle.position!='relative'){
					coords.x += eo.offsetLeft;
					coords.y += eo.offsetTop;
				}
			} else {
				coords.x += eo.offsetLeft;
				coords.y += eo.offsetTop;
			}
			eo = eo.offsetParent;
		} while(eo);
document.getElementById('infoMSG').innerHTML = eo_original.tagName + ' xy coords: ' + coords.x + ', ' + coords.y + ' depth: ' + i;
		return coords;
	} else {
		return null;
	}
}
</script>

Im Firefox stimmen die Koordinaten, egal wie tief das Element verschachtelt ist und wie es positioniert wurde. Ich will immer die Koordinaten zur Ecke oben links im Browser, also absolut.

Der Internet-Explorer liefert mir da ganz seltsame werte. Vermute mal nur die Abweichung zum Nachbar-Element (relative Position). Hat jemand eine Idee was an dem obigen Code dem MSIE nicht schmeckt

ich danke euch vielmals!

Gruß
Laura
 
Hi,

bei mir gibt der IE (6 + 7) die gleichen Koordinaten für das Element aus, wie die übrigen Browser.

Lediglich im standardkonformen Darstellungsmodus stimmen derzeit die Werte nicht überein, da dem DIV #irgendeinelement im Stylesheet zu den Positionsangaben die Einheit "px" fehlt.
 
Ob das Element nun relativ positioniert ist oder nicht spielt eigentlich keine Rolle wenn man nur wissen will wo es sich befindet zum Momentanen zeitpunkt der Abfrage befindet.

Man geht immer ein Elternelement nach oben und nimmt sich dann den Wert von Links und oben und addiert ihn einfach hinzu also ist das was Du hast soweit richtig nur die If Else Abfrage kannst dir eigentlich schenken ;).
 
Zuletzt bearbeitet:
Hi, genau da war der Wurm ;) habe die if-else raus geschmissen weil's mir ohnehin sletsam vorkam. Und siehe da: Es geht!

Besten Dank!!

Gruß
Laura
 

Neue Beiträge

Zurück