[JavaScript][转]offsetParent和parentElement的区别

作者:未知  来源于:网络转载  发布时间:2006-9-30 23:42:32
一直以为offsetParent和parentElement是一回事,最近在做web控件才发现原来的理解是大错特错。
 
 parentElement 在msdn的解释是Retrieves the parent object in the object hierarchy.
 
 而offsetParent在msdn的解释是Retrieves a reference to the container object that defines the offsetTop and offsetLeft properties of the object. 这个解释有些模糊。我们再来看看他的remarks
 
 Most of the time the offsetParent property returns the body object.
 
 大多说offsetParent返回body
 
 
 Note  In Microsoft® Internet Explorer 5, the offsetParent property returns the TABLE object for the TD object; in Microsoft® Internet Explorer 4.0 it returns the TR object. You can use the parentElement property to retrieve the immediate container of the table cell.
 
 对于IE 5.0以上,TD的offsetParent返回Table。
 
 但是msdn并没有讨论在页面td元素中存在绝对/相对定位时offsetParent的值。
 
 以下是我个人总结的规律
 
 在td中的元素会把第一个绝对/相对定位的hierarchy parent当作offsetParent,如果没有找到需要分三种情况讨论
 
   一,如果该元素没有绝对/相对定位,则会把td当作offsetParent
 
   二,如果该元素绝对/相对定位并且table没有绝对/相对定位,则会把body当作offsetParent
 
   三,如果该元素绝对/相对定位并且table绝对/相对定位,则会把table当作offsetParent
 
 看一下示例代码
 
 1.<BODY >
 <TABLE BORDER=1 ALIGN=right>
   <TR>
     <TD ID=oCell><div id="parentdiv" style="position:relative" >parentdiv<div id="sondiv">sondiv</div></div></TD>
   </TR>
 </TABLE>
 
 
 运行结果parentdiv.offsetParent.tagName IS "body"
 
                 sondiv.offsetParent.id     IS "parentdiv"
 
 2.<BODY >
 <TABLE BORDER=1 ALIGN=right>
   <TR>
     <TD ID=oCell><div id="parentdiv" style="position:relative" >parentdiv<div id="sondiv" style="position:relative">sondiv</div></div></TD>
   </TR>
 </TABLE>
 
 运行结果parentdiv.offsetParent.tagName IS "body"
 
                 sondiv.offsetParent.id     IS "parentdiv"
 
 3.<BODY >
 <TABLE BORDER=1 ALIGN=right>
   <TR>
     <TD ID=oCell><div id="parentdiv" >parentdiv<div id="sondiv" style="position:relative">sondiv</div></div></TD>
   </TR>
 </TABLE>
 
 
 运行结果parentdiv.offsetParent.tagName IS "TD"
 
                 sondiv.offsetParent.tagName    IS "body"
 
 4.<BODY >
 <TABLE BORDER=1 ALIGN=right>
   <TR>
     <TD ID=oCell><div id="parentdiv" >parentdiv<div id="sondiv">sondiv</div></div></TD>
   </TR>
 </TABLE>
 
 
 运行结果parentdiv.offsetParent.tagName IS "TD"
 
                 sondiv.offsetParent.tagName    IS "TD"
 
 5.<BODY >
 <TABLE BORDER=1 ALIGN=right style="position:relative">
   <TR>
     <TD ID=oCell><div id="parentdiv" style="position:relative" >parentdiv<div id="sondiv" style="position:relative">sondiv</div></div></TD>
   </TR>
 </TABLE>
 
 运行结果parentdiv.offsetParent.tagName IS "Table"
 
                 sondiv.offsetParent.tagName    IS "parentdiv"

转载于:https://www.cnblogs.com/Godblessyou/archive/2007/12/24/1012920.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/269131.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

福禄克DSX系列教你如何测试铜缆跳线和光纤跳线

无论是用于在数据中心的光纤配线区和交换机之间进行连接的光纤跳线&#xff0c;还是用于将终端设备连接到工作区插座的局域网中的铜跳线&#xff0c;跳线都是网络不可或缺的一个组成部分&#xff0c;而跳线通常也是网络中最脆弱的环节。它比其他任何部件都更容易受到损坏。 由于…

最新可用NOD32免ID升级服务器

最新可用NOD32免ID升级服务器 最新可用NOD32免ID升级服务器 &#xff0c;请参阅这里&#xff0c;我会保持可用&#xff0c;^_^&#xff01;上面的解决不了&#xff0c;下面的慢慢尝试吧&#xff01;-----------------------------------------------能用的及说明如下&#xff1…

通过福禄克LinkIQ网络电缆测试仪排除 VLAN 故障

IT行业的每个人都听说过局域网&#xff08;LAN&#xff09;&#xff0c;并且很可能知道它是一个由无数设备组成的网络——计算机、服务器、路由器、监控摄像头等他们都是都连接在一个物理位置。由于虚拟局域网&#xff08;VLAN&#xff09;在技术上并不存在于物理上&#xff0c…

2021-09-22

missing right parenthesis 少反括号 后面没跟反括号。

Ubuntu16.04 安装 docker

安装docker首先要需要一台宿主机&#xff0c; 我目前用VMvare下安装的Ubuntu16.04系统为宿主机&#xff0c;进行docker安装测试。 ubuntu安装时选的中文环境&#xff0c;生成的sources.list里面的源url主要是&#xff1a;cn.archive.ubuntu.com&#xff0c;这个可以从国内服务器…

js下的keyCode.

js下的keyCode.这样好记 Keycode 常数 可在代码中的任何地方用下列常数代替实际值&#xff1a; 常数 值 描述 vbKeyLButton 0x1 鼠标左键 vbKeyRButton 0x2 鼠标右键 vbKeyCancel 0x3 CANCEL 键 vbKeyMButton 0x4 鼠标中键 …

使用福禄克CFP单模光纤测试仪像专家一样设置参数!

在使用福禄克CFP单模光纤测试仪测试光纤链路时&#xff0c;如果要测试一个光纤接头的损耗&#xff0c;不可能只测量单个光纤接头&#xff0c;必须将其与类似的已知质量接头相匹配。这里光纤接头损耗指的是配对光纤接头的损耗&#xff0c;这也是为什么要设置参考值。 举例&…

java不要使用e.printStackTrace()

不要使用e.printStackTrace() 反例&#xff1a; 正例&#xff1a; 原因 e.printStackTrace()打印出的堆栈日志跟业务代码日志是交错混合在一起的&#xff0c;通常排查异常日志不太方便。e.printStackTrace()语句产生的字符串记录的是堆栈信息&#xff0c;如果信息太长太多&am…

阿里云服务器ECS按ctrl+alt+delete无法登录

今天在使用阿里云服务器远程桌面的时候发现怎么也进入不了&#xff0c;远程桌面无法连接&#xff0c;于是想到了在阿里云服务器管理控制台可以使用连接管理终端进行远程桌面连接&#xff0c;下面详细介绍阿里云服务器操作经验。 操作步骤如下 登录阿里云 - 进入云服务器管理控制…

DSX2-5000 CH测试结果使用福禄克LinkWare Live软件的好处

近日&#xff0c;福禄克网络宣布&#xff0c;福禄克LinkWare Live软件中的上传结果数量已超过5000万。如果您是在过去一年中为5000万中做出贡献的众多之一&#xff0c;那么您一定见证体会且享受到了在布线认证工作时随时随地与任何设备上任何人一起管理的方便性及成本节约的好处…

java异常日志不要只打一半,要输出全部错误信息

//错误 try{ }catch(Exception e){log.error("你的程序有异常啦"); } 异常e都没有打印出来&#xff0c;所以压根不知道出了什么类型的异常 //错误 try{ }catch(Exception e){log.error("你的程序有异常啦" e.getMessage()); }e.getMessage()不会记录详细…

Akka(9): 分布式运算:Remoting-远程构建式

上篇我们讨论了Akka-Remoting。我们说Akka-Remoting是一种点对点的通讯方式&#xff0c;能使两个不同JVM上Akka-ActorSystem上的两个Actor之间可以相互沟通。Akka-Remoting还没有实现完全的Actor位置透明&#xff08;location transparency&#xff09;&#xff0c;因为一个Act…

福禄克FI-3000光纤监测显微仪使用MPO检查摄像头?

福禄克网络FI-3000 光纤检测显微仪是行业内较好且可以完整的光纤检查仪器&#xff0c;它有单光纤和MPO的测摄像机&#xff1b;自动或手动检查&#xff0c;还可与福禄克网络Versiv布线认证系统、Linkware或智能手机配合使用。下面福禄克网络指定经销商—明辰智航的工程师给大家讲…

Cisco Catalyst 4500

Q. 思科正在推出哪些Cisco Catalyst 4500 E系列线路卡&#xff1f;A.思科正在推出三款全新的E系列线路卡&#xff0c;性能为每线路卡插槽2.4万兆。它们包括&#xff1a; 48端口10/100/1000 PoE &#xff08;2:1过多订购&#xff09; 48端口10/100/1000增强型PoE线路卡&#xff…

rails 5 action cable 服务器部署

config/environments/development.rb config.action_cable.url ws://10.129.56.223:28080 // 浏览器访问的websoket 服务地址 ActionCable.server.config.disable_request_forgery_protection true // 允许远程请求访问转载于:https://www.cnblo…

通过福禄克FI-7000光纤显微摄像机进行光纤端面清洁

无论任何光纤类型、应用或数据速率&#xff0c;光的传输都需要干净的链接路径&#xff0c;包括通过路线上的任何无源连接或接头&#xff0c;虽然我们谈论了很多关于光纤清洁度的话题&#xff0c;但不管我们在这个话题上说了多少&#xff0c;当我们面对它时&#xff0c;光纤端面…

XSL学习笔记6 XSLT内置模板规则

XSL学习笔记6 XSLT内置模板规则定义正确的模板规则来匹配XML树中的节点是XSLT应用的关键。为了让源文档树的节点在没有明确匹配规则的情况下&#xff0c;能够被递归处理&#xff0c;XSLT定义了几个内置的模板规则&#xff0c;可以将其看作是XSL式样表文档的默认模板规则。内置模…