javascript - 元素偏移量始终为 0

标签 javascript jquery

单击链接时,我正在使用带有链接列的表我想获取行的偏移量。我尝试使用 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/

相关文章:

javascript - 如何删除 process.env 中的值?

javascript - Sendgrid node.js 错误 535 错误的用户名/密码

javascript - 将工作的 Ruby on Rails 表单转换为 AJAX

javascript - jQuery:仅返回文本的一部分

javascript - 视频结束后更换横幅

javascript - react 格式问题

javascript - 重复一个 div 次数

javascript - 在 Extjs 4 中更改按钮字体大小

javascript - $.post Jquery发送数组

javascript - Hammer.js:Android 网站捏合事件未触发