关于javascript取得对象的绝对位置的一点疑惑!

来源:百度知道 编辑:UC知道 时间:2024/05/18 03:03:25
function GetPosition(obj){
var left = 0;
var top = 0;

while(obj != document.body){
left = obj.offsetLeft;
top = obj.offsetTop;

obj = obj.offsetParent;
}

alert("Left Is : " + left + "\r\n" + "Top Is : " + top);
}

在网上看到一个得到对象的绝对位置的Javascript代码段,其中obj = obj.offsetParent;这里有点不懂啊,既然left和top都已经得到了,后面来这么一句不是有点多此一举吗?请高手明示!

其实是这种写法给你写迷了!这里的求绝对位置是相对于body的绝对位置,而offset是相对于父层的参数.这里就是问题的关键所在了!

函数传的入对象若父层不是body而是一个div时怎么办?比如这个div在body中,它的offsetTop当然是div相对于body的绝对位置,而输入的却是这个div的子对象,而这个子对象相对于DIV的offsetTop却是另一个值,如果求这个相对于body的绝对位置,显然是自身的offsetTop与父层的offsetTop的累加!

所以这里是:
while(obj != document.body){//目标不是body
left += obj.offsetLeft;
top += obj.offsetTop;
obj = obj.offsetParent;//相上冒泡,使用obj为自己的父对象.
}
同时这句还是一个循环的状态的改变,否则不是死循环了吗?

中间两句你抄错了吧?