Ich kann nicht herausfinden, wie man die OffsetTop eines Elements innerhalb einer Tabelle erhalten. Es funktioniert gut für Elemente außerhalb von Tabellen, aber alle Elemente in einer Tabelle geben das gleiche Ergebnis zurück und befinden sich normalerweise oben auf der Seite. Ich habe das in Firefox und Chrome versucht. Wie bekomme ich den OffsetTop eines Elements in einer Tabelle?Getting OffsetTop des Elements in einer Tabelle
5
A
Antwort
17
offsetTop
liefert einen Wert relativ zu offsetParent
; Sie müssen offsetParent.offsetTop
über alle Eltern rekursiv hinzufügen, bis offsetParent
null
ist. Erwägen Sie die Verwendung der jQueryoffset
()
Methode.
EDIT: Wenn Sie jQuery nicht verwenden möchten, können Sie eine Methode wie diese (ungetestet) schreiben:
function offset(elem) {
if(!elem) elem = this;
var x = elem.offsetLeft;
var y = elem.offsetTop;
while (elem = elem.offsetParent) {
x += elem.offsetLeft;
y += elem.offsetTop;
}
return { left: x, top: y };
}
Das ist nicht in IE7 funktioniert (zuverlässig). IE5-7 zählt Elemente mit relativer Positionierung nicht als offsetParents. – KeatsKelleher
@SLaks brillante Lösung :) – Muhammed