obj = obj.offsetParent;是什么意思?

RT obj = obj.offsetParent;是什么意思?

以前很少用原生JS,都是用JQ获取某个元素距离页面顶部的偏移量,像这样:

var offsetTop = $(obj).offset().top;

然后在用原生js的时候需要获取多层嵌套的任意元素相于<body>顶部的偏移量要这样:

function getTop(obj) {    var iTop = 0;    while (obj != window.document.body && obj != null) {
        iTop += obj.offsetTop;
        obj = obj.offsetParent;
    }    return iTop;
}

这里的obj = obj.offsetParent没明白是什么意思,我去掉这句后,运行时,浏览器直接卡死了,说明while变成了无限循环。。那么就是obj变成了body或者null...

有谁能详细解释一下这个函数和obj = obj.offsetParent么- -感谢!


ibeautiful
浏览 811回答 1
1回答

慕勒3428872

获取父级obj&nbsp;=&nbsp;obj.parent;获取最近的祖先定位元素,也就是有position: absolute/fixed/relative的最近的一个祖先obj&nbsp;=&nbsp;obj.offsetParent;你那个是一直向上递推到 body(或者递推到根节点),累加offetTop,得出你的div 距离 body 的高度var&nbsp;obj&nbsp;=&nbsp;document.getElementById('aa');var&nbsp;top&nbsp;=&nbsp;0;while&nbsp;(obj&nbsp;!=&nbsp;document.body&nbsp;&&&nbsp;obj&nbsp;!=&nbsp;null) &nbsp;//递推&nbsp;obj&nbsp;到&nbsp;body&nbsp;或者&nbsp;空&nbsp;为止,注意:到...为止{ &nbsp;&nbsp;&nbsp;&nbsp;top&nbsp;+=&nbsp;obj.offsetTop;&nbsp;//obj获取&nbsp;到有position祖先中的offsetTop值 &nbsp;&nbsp;&nbsp;&nbsp;obj&nbsp;=&nbsp;obj.offsetParent;&nbsp;//替换obj&nbsp;为有position的祖先}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript