不懂javascript取得对象的绝对位置的代码?

来源:百度知道 编辑:UC知道 时间:2024/09/23 12:11:37
function getPosition(obj){
var top=obj.offsetTop;
var left=obj.offsetLeft;
var width=obj.offsetWidth;
var height=obj.offsetHeight-2;
while(obj=obj.offsetParent){
top+=obj.offsetTop; //等价于top=top+obj.offsetTop;
left+=obj.offsetLeft;
}
return{
top : top,
left : left,
width : width,
height : height
}
}

Javascript取得对象绝对位置的代码,请高手详细帮忙解释一下!谢了!

例如:
<table width="200" height="100" border="1" id="TB">
<tr id="TR" ><td id="TD"><input type="text" id="T" width="100"/></td></tr>
</table>

我们以取文本框T为例,

var top=obj.offsetTop;
//获取当前对象到其上级层顶部的距离:如:T到TD顶部的距离
var left=obj.offsetLeft;
//获取当前对象到其上级层左边的距离:如:T到TD的左边的距离

var width=obj.offsetWidth;
//获取当前对象的实际宽度,如:T的宽度

var height=obj.offsetHeight-2;
//获取当前对象的实际高度,如:T的高度

while(obj=obj.offsetParent){
top+=obj.offsetTop;
left+=obj.offsetLeft;

//这人while循环中,就是一直递归寻找当对象的上一级对象,并将上级对象的offsetTop加上当前的offsetTop,offsetLeft加上当前的offsetLeft,一直到上级对象不存在
如:T的offsetTop加上T的上级对象TD的offsetTop,再加上TD的上级对象TABLE的offsetTop,最后一般是到BODY结束
注意:DIV和TR不会被当做是对象的上级。