js 元素对象位置

  1:获取指定元素的位置left和top

  

ExpandedBlockStart.gif 代码
         // 用 Javascript 获取指定页面元素的位置
     function  getElementPos(elementId) {
        
var  ua  =  navigator.userAgent.toLowerCase();
        
var  isOpera  =  (ua.indexOf( " opera " !=   - 1 );
        
var  isIE  =  (ua.indexOf( " msie " !=   - 1   &&   ! isOpera);  //  not opera spoof
         var  el  =  document.getElementById(elementId);
        
if (el.parentNode  ==   null   ||  el.style.display  ==   ' none ' ){
            
return   false ;
        }
        
var  parent  =   null ;
        
var  pos  =  [];
        
var  box;
        
if (el.getBoundingClientRect){ // IE
            box  =  el.getBoundingClientRect();
            
var  scrollTop  =  Math.max(document.documentElement.scrollTop, document.body.scrollTop);
            
var  scrollLeft  =  Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);
            
return  {x:box.left  +  scrollLeft, y:box.top  +  scrollTop};
        } 
else   if (document.getBoxObjectFor){ //  gecko
            box  =  document.getBoxObjectFor(el);
            
var  borderLeft  =  (el.style.borderLeftWidth) ? parseInt(el.style.borderLeftWidth): 0 ;
            
var  borderTop  =  (el.style.borderTopWidth) ? parseInt(el.style.borderTopWidth): 0 ;
            pos 
=  [box.x  -  borderLeft, box.y  -  borderTop];
        } 
else { //  safari & opera
            pos  =  [el.offsetLeft, el.offsetTop];
            parent 
=  el.offsetParent;
            
if  (parent  !=  el) {
                
while  (parent) {
                    pos[
0 +=  parent.offsetLeft;
                    pos[
1 +=  parent.offsetTop;
                    parent 
=  parent.offsetParent;
                }
            }
            
if  (ua.indexOf( " opera " !=   - 1
                
||  ( ua.indexOf( " safari " !=   - 1   &&  el.style.position  ==   " absolute "  )){
                pos[
0 -=  document.body.offsetLeft;
                pos[
1 -=  document.body.offsetTop;
            }
        }
        
if  (el.parentNode) { 
            parent 
=  el.parentNode; 
        } 
else  { 
            parent 
=   null
        }
        
while  (parent  &&  parent.tagName  !=   " BODY "   &&  parent.tagName  !=   " HTML " ) {  //  account for any scrolled ancestors 
            pos[ 0 -=  parent.scrollLeft;
            pos[
1 -=  parent.scrollTop;
            
if  (parent.parentNode) { 
                parent 
=  parent.parentNode; 
            } 
else  { 
                parent 
=   null
            }
        }
        
return  {x:pos[ 0 ], y:pos[ 1 ]};
    }  

 

  调用方法:var pos = getElementPos(obj.id);

        alert(pos.x + "   " + pos.y);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值