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

外层函数在return时,调用内层函数,没有返回内层函数的调用结果

外层函数在return时,调用内层函数,没有返回内层函数的调用结果

为了获取元素据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呢?希望各位大神讲解一下!谢谢!
查看完整描述

2 回答

?
Helenr

TA贡献1780条经验 获得超4个赞

return getEleTop(ele.offsetParent);


查看完整回答
反对 回复 2019-03-26
?
DIEA

TA贡献1820条经验 获得超2个赞

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{

            // 这里没有return出去

            return getEleTop(ele.offsetParent); //否则,就继续调用这个函数,获得ele的定位父元素的offsetTop

        }

    }

    return getEleTop(ele);

}


查看完整回答
反对 回复 2019-03-26
  • 2 回答
  • 0 关注
  • 686 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信