取得html控件对象的top,和left

今天完善了一下ajax下拉选择框,在显示定位发现了一个小问题,所以备忘一下

一般情况要取得对象的离浏览器top和left只需要用objectID.offsetLeft和objectID.offsetTop就可以了
但如果该对象嵌套在其它容器(如div,table)里的话就不能直接这样取了,而要一个一个从里到外取,使用offsetParent循环取出直到nodeName不为body,最后再全都累加起来才是我们要的数据,例如有如下html代码:
None.gif    < table >
None.gif       
< tr >
None.gif            
< td >< input  id ="aa"  type ="text"  size ="40" >< href ='#'  onclick ="ShowSelectTable('aa')" > 选择 </ a ></ td >
None.gif       
</ tr >
None.gif  
</ table >

如果要得到aa的top和left就要取得
aa.offsetLeft
aa.offsetTop
        td.offsetLeft
        td.offsetTop
                table.offsetLeft
                table.offsetTop

思路清楚再看代码就清楚了:
None.gif // 取得要显示的X,Y坐标
None.gif
function  fGetXY(aTag)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
var oTmp = aTag;
InBlock.gif    
var pt = new Point(0,0);
InBlock.gif    
do 
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        pt.x 
+= oTmp.offsetLeft;
InBlock.gif        pt.y 
+= oTmp.offsetTop;
InBlock.gif        oTmp 
= oTmp.offsetParent;
InBlock.gif        alert(oTmp.nodeNames);
ExpandedSubBlockEnd.gif    }
 while(oTmp.tagName!="BODY");
InBlock.gif    
return pt;
ExpandedBlockEnd.gif}

None.gif
None.gif
// 存放x,y坐标
None.gif
function  Point(iX, iY)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
this.x = iX;
InBlock.gif    
this.y = iY;
ExpandedBlockEnd.gif}

ajax选择下拉框添加了几个内容:
添加显示框自动定位
添加设置分页大小
添加可自定义皮肤路径
修复字段为空值时错误

源码: http://www.cnblogs.com/lxxnet/archive/2006/09/02/493050.html

演示地址:(由于是免费空间,有时速度可能会很慢)
http://xweex.a124.47data.com/index.html

转载于:https://www.cnblogs.com/lxxnet/archive/2006/09/05/495802.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值