Getting offsetTop of element in a table
10,785
offsetTop
returns a value relative to offsetParent
; you need to recursively add offsetParent.offsetTop
through all of the parents until offsetParent
is null
. Consider using jQuery's offset
()
method.
EDIT: If you don't want to use jQuery, you can write a method like this (untested):
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 };
}
Author by
Matthew
Updated on July 22, 2022Comments
-
Matthew almost 2 years
I can't seem to figure out how to get the offsetTop of an element within a table. It works fine on elements outside tables, but all of the elements within a table return the same result, and it's usually at the top of the page. I tried this in Firefox and Chrome. How do I get the offsetTop of an element in a table?
-
KeatsKelleher over 13 yearsThis doesn't work in IE7 (reliably). IE5-7 doesn't count elements with relative positioning as offsetParents.
-
Mo. about 10 years@SLaks brilliant solution :)