200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 如何解决js父级函数调用子函数出现函数未定义问题

如何解决js父级函数调用子函数出现函数未定义问题

时间:2024-07-08 01:49:23

相关推荐

如何解决js父级函数调用子函数出现函数未定义问题

web前端|js教程

javascript,子函数,调用

web前端-js教程

首先定义了一个全局函数Locating,又在Locating内定义了一个局部函数pageScroll,然后我全局函数调用pageScroll时,报错Uncaught ReferenceError: pageScroll is not defined。

CT代码转易语言源码源码,vscode全屏后怎么退出,ubuntu虚拟机分辨率,tomcat的5类日志,wpf sqlite 批量,h5网页设计语言,dedecms数据库结构,服务器租划算还是买划算,discuz多城市切换插件,igix前端框架,怪爬虫软件,php 返回404,seo关键词优化收费,springboot登录流程,o2o商城网站系统开发,拖拽网页设计,飞模板动画效果,php 后台管理 源码,页面刷新代码,代账公司管理系统,cms 轻程序 phplzw

代码如下:

仿 日报 源码,ubuntu放行8080,ec2 安装tomcat,4399游戏爬虫,php程序员工作描述,沧州百度seo优化费用lzw

function Locating(locate,time){ console.log(locate+ -- +time); var p_locate=document.getElementById(locate); var window_top_y = document.body.scrollTop;//获取滚动条顶部距离页面顶部的距离 var element_top_y = p_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,function pageScroll() { 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(); }

一开始以为是作用域链的问题。

聚合在线源码,vscode去哪设置模板,ubuntu拓展分区,协议如何关闭tomcat,运用VSPython爬虫,php微信接口文件,天门农业seo推广哪个好,下载一个网站网站源码下载,discuz 模板目录 代码lzw

但如下相同结构的代码并没有执行错误

function a(){ console.log("a") function b() {console.log("b") } b()}

去论坛问了下。原来是执行调用setTimeout的原因

steTimeout函数机制就是用eval执行第一个参数’action()”字符串,既然action()字符串不存在,那么我把它换成了一个对象action进行测试,

原来setTimeout执行完成后,执行环境自动切换到window环境下,所以再次调用pageScroll()时才会出现函数未定义的错误。

解决方法是将

setTimeout(pageScroll(),50)

写成

setTimeout(pageScroll,50);

即把字符串写成对象。

好像setIntraval执行时是也会把环境切换到window对象下。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。