js parentElement和offsetParent之间的区别

 更新时间:2010年03月23日 23:15:56   作者:  
这里主要说的是 offsetParent 属性,这个属性在 MSDN 的文档中也没有解释清楚,这就让人更难理解这个属性。 这几天在网上找了些资料看看,再加上自己的一些测试,对此属性有了那么一点的了解,在这里总结一下。
首先是 parentElement 属性,这个属性好理解,就是在 DOM 层次结构定义的上下级关系,如果元素A包含元素B,那么元素B就可以通过 parentElement 属性来获取元素A。
这里主要说的是 offsetParent 属性,这个属性在 MSDN 的文档中也没有解释清楚,这就让人更难理解这个属性。 这几天在网上找了些资料看看,再加上自己的一些测试,对此属性有了那么一点的了解,在这里总结一下。
要明白 offsetParent 属性,要先明白“已定位元素” 这个名字,所谓“已定位元素”就是指给元素设置了 position 属性的样式,并且 position 样式属性的值等于 absolute、relative、fixed 之一的元素。
在使用 offsetParent 属性获取父级对象时有以下两种情况:
    1、元素本身已经定位
        如果元素本身已经定位,那么 offsetParent 属性返回此元素已定位父级元素,如没有已定位的父级元素,则返回 BODY 对象,例如:
复制代码 代码如下:

<body>
<p>
<div>
<span id="obj1" style="position:absolute"></span>
</div>
<div id="pObj1" style="position:absolute">
<span id="obj2" style="position:absolute"></span>
</div>
</p>
</body>

    obj1.offsetParent 返回 BODY 对象
    obj2.offsetParent 返回 pObj1 对象
    2、元素没有定位
        如果元素没有定位, offsetParent 不但会找已经定位的父级元素而且还会查找类型为 TD 和 TABLE 的父级元素,只要找到这三种父级元素的其中任何一种元素将返回此元素,否则返回 BODY 对象,例如:
复制代码 代码如下:

<table width="500" border="0">
<tr>
<td id="td1">
<div id="pObj1">
<span id="obj1"></span>
</div>
</td>
</tr>
<tr>
<td>
<div id="pObj2" style="position:relative">
<span id="obj2"></span>
</div>
</td>
</tr>
</table>

    obj1.offsetParent 返回 td1 对象
    obj2.offsetParent 返回 pObj2 对象
在 DOM 元素的属性里,还有 parentNode 这个属性,其实这个属性跟 parentElement 属性是一个意思,parentElement 属性是 IE 特有的,W3C 标准是使用 parentNode 属性,还有 children 和 childNodes, children 是 IE 特有的, childNodes 被其他浏览支持。

相关文章

  • js生成随机数(指定范围)的实例代码

    js生成随机数(指定范围)的实例代码

    下面小编就为大家带来一篇js生成随机数(指定范围)的实例代码。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • 使用Object.defineProperty实现简单的js双向绑定

    使用Object.defineProperty实现简单的js双向绑定

    这篇文章主要介绍了使用Object.defineProperty实现简单的js双向绑定的相关资料,需要的朋友可以参考下
    2016-04-04
  • JS实现黑色大气的二级导航菜单效果

    JS实现黑色大气的二级导航菜单效果

    这篇文章主要介绍了JS实现黑色大气的二级导航菜单效果,具有延迟响应鼠标事件显示切换效果的功能,非常简单实用,需要的朋友可以参考下
    2015-09-09
  • JavaScript实现获得所有兄弟节点的方法

    JavaScript实现获得所有兄弟节点的方法

    这篇文章主要介绍了JavaScript实现获得所有兄弟节点的方法,实例分析了javascript节点遍历的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • 详解JavaScript中常用操作符的使用

    详解JavaScript中常用操作符的使用

    在 JavaScript 中,有一些操作符可以使代码更简洁、易读和高效。这篇文章为大家整理了11个JavaScript中常用操作符的使用,需要的可以参考一下
    2023-04-04
  • JavaScript文档碎片操作实例分析

    JavaScript文档碎片操作实例分析

    这篇文章主要介绍了JavaScript文档碎片操作技巧,结合实例形式分析了JavaScript中使用文档碎片优化dom操作的技巧,需要的朋友可以参考下
    2015-12-12
  • js实现每日签到功能

    js实现每日签到功能

    这篇文章主要为大家详细介绍了js实现每日签到功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • Sort()函数的多种用法

    Sort()函数的多种用法

    sort() 方法用于对数组的元素进行排序。接下来通过本文给大家介绍Sort()函数的多种用法,对sort函数的用法相关知识感兴趣的朋友一起学习
    2016-03-03
  • AjaxFileUpload.js实现异步上传文件功能

    AjaxFileUpload.js实现异步上传文件功能

    这篇文章主要为大家详细介绍了AjaxFileUpload.js实现异步上传文件功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • 微信小程序图片右边加两行文字的代码

    微信小程序图片右边加两行文字的代码

    这篇文章主要介绍了微信小程序图片右边加两行文字的代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04

最新评论