JavaScript通过ID获取元素坐标

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.getElementByIdx_x_x(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]};  
}  
  
//sample  
var pos=getElementPos("divId");  
alert("距左边距离"+ pos.x +",距上边距离"+pos.y);  

JavaScript通过ID获取元素坐标的更多相关文章

  1. javascript querySelector和getElementById通过id获取元素的区别

    querySelector和getElementById通过id获取元素的区别 <!DOCTYPE html> <html> <head> <meta cha ...

  2. 通过ID获取元素 注:获取的元素是一个对象,如想对元素进行操作,我们要通过它的属性或方法。

    通过ID获取元素 学过HTML/CSS样式,都知道,网页由标签将信息组织起来,而标签的id属性值是唯一的,就像是每人有一个身份证号一样,只要通过身份证号就可以找到相对应的人.那么在网页中,我们通过id ...

  3. js中用tagname和id获取元素的3种方法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. JavaScript中的获取元素的方法

    通过id获取元素 document.getElementById(id名字) 通过标签获取元素 document/元素.getElementsByTagName(标签名) 通过css选择器获取元素 d ...

  5. Python+Appium自动化测试(11)-location与size获取元素坐标

    appium做app自动化测试过程中,有时需要获取控件元素的坐标进行滑动操作.appium中提供了location方法获取控件元素左上角的坐标,再通过size方法获取控件元素的宽高,就可以得到控件元素 ...

  6. JavaScript之怎样获取元素节点

    JavaScript获取元素节点一共有三种方法,分别是通过元素ID.通过标签名字和通过类名字来获取: 1.通过元素ID属性的ID值来获得元素对象-getElementById() DOM提供了一个名为 ...

  7. Javascript及Jquery获取元素节点以及添加和删除操作

    用了javascript和jquery很久,把所有元素节点的操作总结了下,放在博客上作为记录. Javascript获取元素的主要方式有三种 1.document.getElementById('ma ...

  8. 通过ID获取元素

    网页由标签将信息组织起来,而标签的id属性值是唯一的,就像是每人有一个身份证号一样,只要通过身份证号就可以找到相对应的人.那么在网页中,我们通过id先找到标签,然后进行操作. 语法: document ...

  9. js之checkbox的代码全选/全不选,使用id获取元素,而不是name

    每当有多个选项的时候,都会有一种想法是:全选,全不选,如果子选项有被选,父选项也得被选. 注意:这里是根据id来获取元素的,但是不能直接用getElementById,因为那只能返回一个,而不是集合. ...

随机推荐

  1. js中$(function())

    $(document).ready() 里的代码是在页面内容都加载完才执行的 $(document).ready(function(){})可以简写成$(function(){});

  2. oracle--存储过程--bai

    --1 无入参最简单的存储过程 create or replace procedure hello_proc as v_name varchar2(20); v_age number; begin v ...

  3. 如何使用Linux命令行查看Linux服务器内存使用情况?

    一个服务器,最重要的资源之一就是内存,内存够不够用,是直接关系到系统性能的关键所在. 本文介绍如何查看Linux服务器内存使用情况, 1.free命令 free -m [root@localhost ...

  4. BootLoader的架构设计

    @注:黄色部分代表根据不同的开发板进行处理.

  5. ThinkPhp 3.2 CRUD操作

    创建数据对象 ThinkPHP可以帮助你快速地创建数据对象,最典型的应用就是自动根据表单数据创建数据对象,这个优势在一个数据表的字段非常之多的情况下尤其明显. 很简单的例子: // 实例化User模型 ...

  6. redis 在后台启动

    昨天在cmd窗口启动,窗口关闭,再次访问会报错,所以在次打开 首先你要安装服务:redis-server --service-install redis.windows.conf --loglevel ...

  7. Python 类(一)

    这一篇让先抽象的了解下类与实例 一类的定义 从具体的程序设计观点来看: 类是一种数据结构.我们可以使用类来定义包含数据值和行为特性的对象(类对象). 类是封装逻辑和数据的另一种形式. 面向对象设计观点 ...

  8. 学习php一个星期

    学习这事都是被逼出来的,总监让我做一个邮箱系统,目测可以.

  9. C3P0连接池配置和实现详解

    一.配置 <c3p0-config> <default-config> <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数.Default: 3 --> ...

  10. SharePoint "System.Data.SqlClient.SqlException (0x80131904): Parameter '@someColumn' was supplied multiple times.“

    最近在处理SharePoint Office365的相关开发的时候发现了这样一个奇怪的现象: 无法通过API更新Editor field,只要已更新就会throw Exception,由于是Offic ...