单击链接时,我正在使用带有链接列的表我想获取行的偏移量。我尝试使用 element.offsetTop 和 $(element).offset().top 并且都返回 0 父元素也返回 0 作为它们的偏移顶部。
我试过了
function getTop(element)
{
var top = findPosY(element);
console.log(top);
}
function findPosY(obj) {
var curtop = 0;
if (obj.offsetParent) {
while (obj.offsetParent) {
curtop += obj.offsetTop
obj = obj.offsetParent;
}
}
else if (obj.y)
curtop += obj.y;
return curtop;
}
但这仍然为 y 位置返回 0。
最佳答案
以下函数遍历 DOM 树,计算其路径上的位置。它返回一个以 .x
和 .y
作为属性的对象,因此 getPosition(element).y
将为您提供来自页面顶部。
/**
* returns the absolute position of an element regardless of position/float issues
* @param {HTMLElement} el - element to return position for
* @returns {object} { x: num, y: num }
*/
function getPosition(el) {
var x = 0,
y = 0;
while (el != null && (el.tagName || '').toLowerCase() != 'html') {
x += el.offsetLeft || 0;
y += el.offsetTop || 0;
el = el.parentElement;
}
return { x: parseInt(x, 10), y: parseInt(y, 10) };
}
希望这有帮助;)
关于javascript - 元素偏移量始终为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20433868/