问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

javascript onclick调用函数,进入不了函数,报函数未定义的错误

发布网友 发布时间:2022-04-23 14:29

我来回答

4个回答

懂视网 时间:2022-04-23 18:50

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

代码如下:

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();
 }

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

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

 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对象下。

热心网友 时间:2022-04-23 15:58

你把show()函数改个名字,比如:_show()。可能是同引入的js文件总的某个函数冲突了。追问

热心网友 时间:2022-04-23 17:16

确保ID是唯一的情况下,把这段函数代码搬到input dom元素后面(最好是</body>之前就行了)

热心网友 时间:2022-04-23 18:51

亲。show()是jquery自带的函数!,你定义show()一定进不去啊。换一个名字就好了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
结核病是什么样的疾病? 曹丕17岁得了肺痨,明知自己命不长久,还要强争王位,是不是很自私呢?_百... 古代小说常出现的病名 急求一篇"生活小窍门"(500字)的作文 至今最有什么小妙招 健康的戒烟方法 笔记本电池锁死是什么原因引起的? 黑龙江债权转让合同纠纷该怎样取证 安徽债权转让合同纠纷应该怎么样取证 房产官司律师费多少 幻塔独角兽头部位置 想问一下哪个牌子的鼠标用的时间比较长啊,玩游戏特别费鼠标! 有大神推荐一些手感特别轻盈的游戏鼠标吗DPI不用太高要刷新率高些的而且要大鼠最好是亮面或者亲肤的材 我鼠标特别敏感,点一下就反应了好几下。怎么办 要一个特别的鼠标连点器 罗技鼠标有什么特别? 在哪里可以买到,特别的键盘和鼠标? 当下有什么鼠标特别适合打魔兽澄海3C用 推荐一款? 最近要换鼠标,有没有什么特别轻的鼠标 我的配置玩侠盗猎车4中文版不流畅.很不舒服.特别鼠标左右转换角度时不流畅.是我不习惯还是怎样. VS2010一调试就崩溃 vs2010反应太慢 visual studio 2015调试时程序运行很慢,怎么办 vs2010调试网站有延迟 为什么我的VS.NET2008加载解决方案中的一些项目非常缓慢? 原本都很正常的,后来调试一些程序后变的非常慢. 我用visual studio2010编写C#程序时调试很慢,应该不是电脑配置的原因,有解决方案的说下,谢谢! 煮饺子锅里很多泡沫是不是锅没洗干净 vs2012调试的时候很慢才显示出来 vs2010今天突然按F5调试的时候很慢,以前大概三到四秒,现在大概半分钟,还是个空的winform 我用的vs2010 调试很慢 T恤是棉的好还是聚酯纤维的好还是两个成分都有的好啊? 棉的爱皱 聚酯的还有点不舒服。。 谁知道为什么drastic nds模拟器进去之后找不到存放游戏的文件夹啊,,求大神指教。 drastic为什么已经下载好的nds游戏放SD卡根目录 显示如下 用的华为 NDS模拟器drastic无法初始 口袋妖怪白2存档修改之后,为什么Drastic无法读取? 求助啊、下了安卓nds模拟器drastic、都弄好了却载不了rom 出现如图 drastic文件夹在手机内存里面,可以移动SD吗 阿玛尼手表金属表带发黄怎么办? 为什么我下了一个DraStic NDS模拟器,就是小霸王学习机模拟器。下载过之后,解压缩到根目录,会解压缩失 阿玛尼陶瓷表表带变黄 PSP安装的NDS 模拟器为什么不显示? 下载了个‘激烈nds模拟器’,但是不会用,选择‘载入新游戏’然后搜索出一... 为什么手机的drastic有些游戏没有金手指??重装机兵2R没有,怎么填写金手指?要怎样做啊? 建行信用卡额度九千已全部分期,我再想再申请快e贷.建行会批吗 电脑网页的字变的超级小,怎么把它放大呢 怎么把网页的内容放大? 10周5天头臀长多少 榕树贷款的资金匹配,全部是货款被拒吗? 头臀径62mm的胎儿多大 B超检测孕囊大小56X47X61mm可见头臀径51mm这个数值具体是什么意思怎么看?