Non riesco a capire come ottenere l'offsetTop di un elemento all'interno di una tabella. Funziona bene sugli elementi esterni alle tabelle, ma tutti gli elementi all'interno di una tabella restituiscono lo stesso risultato e solitamente si trova nella parte superiore della pagina. Ho provato questo in Firefox e Chrome. Come ottengo l'offsetTop di un elemento in una tabella?Get offsetTop dell'elemento in una tabella
5
A
risposta
17
offsetTop
restituisce un valore relativo a offsetParent
; è necessario aggiungere ricorsivamente offsetParent.offsetTop
attraverso tutti i genitori fino a offsetParent
è null
. Prendi in considerazione l'utilizzo del metodo jQueryoffset
()
.
EDIT: Se non si desidera utilizzare jQuery, è possibile scrivere un metodo come questo (non testata):
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 };
}
Questo non funziona in IE7 (affidabile). IE5-7 non conta gli elementi con posizionamento relativo come offsetParents. – KeatsKelleher
@SLaks soluzione brillante :) – Muhammed