父级函数无法调用内部子函数

2b0x 2017-09-24 06:05:12
首先定义了一个全局函数Locating(),又在全局函数内定义了一个内部函数pageScroll()。当我在全局函数内调用局部函数时,提示Uncaught ReferenceError: pageScroll is not defined。

代码如下:
function Locating(locate,time){
console.log(locate+' -- '+time);
var div_locate=document.getElementById(locate);
var window_top_y = document.body.scrollTop;//获取滚动条顶部距离页面顶部的距离
var element_top_y = div_locate.offsetTop;//获取某元素顶部距离页面顶部的距离
var distance = window_top_y-element_top_y;//当前窗口与顶部的距离
var time = time;
var move_distance = time>50?Math.ceil((distance/Math.ceil(time/50))):distance;//每次移动的距离
//每次移动的位移应为distance/duration,要移动的位置为element_top_y,
pageScroll = function() {
var top = document.body.scrollTop;//获取滚动条顶部距离页面顶部的距离
var dis_top = top - element_top_y;
window.scrollBy(0,-move_distance);
scrolldelay=setTimeout('pageScroll()',50);
if(dis_top<=0){
clearTimeout(scrolldelay);
}
// console.log(dis_top);
}
pageScroll();
}


我知道这是作用域链引起的问题,除了将局部函数定义为全局外,各位前辈还有没有其他更好的办法可以分享学习下。
...全文
202 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
孟子E章 2017-09-24
  • 打赏
  • 举报
回复
改成 scrolldelay=setTimeout(pageScroll,50); 可以参考 http://blog.csdn.net/getcomputerstyle/article/details/52101736 http://www.cnblogs.com/yuqingfamily/p/5816560.html

87,994

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧