为了账号安全,请及时绑定邮箱和手机立即绑定

为什么还要输入 current = current.offserParent ?

真正的宽度已经由actualLeft +=current.offsetLeft计算出来了,下面那句话不是多此一举吗

正在回答

5 回答

<script type="text/javascript">

var getElmentTop=function(element){

var actualTop=element.offsetTop;//初始化,在element没有定位父元素(或解释为定位父元素为document)的时候,实际的高actualTop=element.offsetTop

var current=element.offsetParent;//定义element的定位父元素current,element.offset就是element相对于current的偏移(element上边界到current上边界的距离)

while(current != null){ //在element有定位父元素的时候进入这个循环

actualTop+=current.offsetTop;//实际的高等于element.offsetTop+current.offsetTop(这是element的定位父元素不再有定位父元素的情况,如果current还有定位父元素,实际高就应该是element.offsetTop+current.offsetTop+current.offsetParent.offsetTop+....)

current=current.offsetParent;//这句话就是用来实现父元素还有定位父元素的情况(element.offsetTop+current.offsetTop+current.offsetParent.offsetTop+....),current=current.offsetParent,如果有父元素,current!=null,继续循环,如果没有父元素,也就是current已经找到document了,那current=null跳出循环

    }

    return actualTop;//函数返回实际距离页面顶部距离

}

</script>


1 回复 有任何疑惑可以回复我~

只有当current==null 也就是说到了最外层 才会跳出循环  返回actualleft值

0 回复 有任何疑惑可以回复我~

就是说element的父元素可能还会有父元素 

0 回复 有任何疑惑可以回复我~

要考虑到父元素的父元素的父元素的父元素……

1 回复 有任何疑惑可以回复我~

不会哦··这个循环里可是要用到···actualLeft +=current.offsetLeft

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
搜索框制作
  • 参与学习       66041    人
  • 解答问题       431    个

本课程从简入深讲解搜索框的制作,学习JQ与JS实现Ajax技术的不同点

进入课程

为什么还要输入 current = current.offserParent ?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信