账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    外层函数在return时,调用内层函数,没有返回内层函数的调用结果
    62
    0

    为了获取元素据body的高度偏移量,写了下面这个函数:

    function getTop(ele){
        var top=0;//设定初始值
        function getEleTop(ele){
            top+=ele.offsetTop; //top储存ele的offsetTop
            if(ele.tagName.toLowerCase()=='body'){  //如果ele现在是body,就返回top值
                return top;
            }else{
                getEleTop(ele.offsetParent); //否则,就继续调用这个函数,获得ele的定位父元素的offsetTop
            }
        }
        return getEleTop(ele);
    }

    外层getTop()包裹内层getEleTop(),我想用来隐藏top变量,以免暴露出去。

    内层getEleTop(),我本意想用top来储存ele的offsetTop,然后用top叠加ele的定位父元素(假设为faEle)相对于其定位父元素(假设为paEle)的offsetTop。直到叠加到body为止。
    这样就可以获得ele相对于body的高度偏移量。

    最后内层函数返回top。

    我用外层函数在return的时候,调用内层的getEleTop(ele),最后并没有得到top的值。

    经过一番调试,我发现是内层函数没用return top。所以外层函数返回的是undefied。

    如果外层函数直接是 return top,就可以准确返回。

    但是为什么内层函数没有返回top呢?

    希望各位大神讲解一下!谢谢!

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 不爱就死 普通会员 1楼
      502 Bad Gateway

      502 Bad Gateway


      nginx
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部