热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

html页面调用js文件里的函数报错onclickisnotdefined处理方法

今天处理html标签里的onclick功能的时候总是报错:UncaughtReferenceError:dosaveisnotdefined(…)找了半天都没发现错在哪,最后发现原


今天处理html标签里的onclick功能的时候总是报错:Uncaught ReferenceError: dosave is not defined(…)

找了半天都没发现错在哪,最后发现原来是我写法不对,正确写法如下:

html:

 

<input type="button" value="立即登录" οnclick="dosave();"/>

js:

 

 

  1. dosave = function (){
  2. alert("成功啦!");
  3. }

错误写法一般有以下两种,很致命:

 

 

  1. function dosave(){
  2. alert("会报错!!");
  3. }

 

 

  1. var dosave = function (){
  2. alert("会报错!!");
  3. }

为什么会这样,因为:

 

html页面调用js文件里的函数,写法必须为dosave = function (){}形式,其他方式写,html页面会搜索不到该函数。
 

------------------------------------------------------------------分割线----------------------------------------------------------------

上面是2016年11月11日的博客原文,三年来这个帖子争议非常大,帮助了很多朋友,也坑了很多朋友。在此感谢大家的回复,我把所有评论内容总结一下,希望能有帮助。

1.这个问题很奇特。很多同学平常使用var dosave = function(){}和function dosave(){}都没问题,但是突然一天出现用不了的情况了,我当时就是这样的情况;还有的同学在HBuidlder运行没问题,换eclipse就不起作用。

2.这三种定义函数的写法都是正确的,只不过作用域不同。

3.我们知道var dosave = function(){}和function dosave(){}是等价的,是最常用的定义函数方式,区别在于function dosave(){}可以进行声明提升,而var dosave = function(){}必须先定义才能使用。

4.dosave = function(){}的写法会把dosave函数作为全局作用域函数,相当于windows对象作为他的作用域,所以可以被调用到。

5.有同学给出了一种解决办法,不过我当时就没用$(functiong{ }),所以对我的情况不管用:

1)定义的方法 用funcation 方法名(){} ,这样写没有问题,不过js中千万别把方法写在$(functiong{ })中,这样相当于方法中方法,所以查找不到。

2)将方法放在 $().ready(function () {});之外后,就可以正常执行了。

6.当大家遇到莫名报错时这三种定义函数的写法都试试吧,说不定能帮助到大家,算是提供一种思路。

再次感谢大家的深入研究和回复,有问题希望大家多多回复,我会继续跟进这个问题,把更好的答案提供给大家。谢谢!


原文:https://blog.csdn.net/ywl570717586/article/details/53130863


推荐阅读
  • 阿里云 Aliplayer高级功能介绍(八):安全播放
    如何保障视频内容的安全,不被盗链、非法下载和传播,阿里云视频点播已经有一套完善的机 ... [详细]
  • SvpplyTable: 实现可扩展和可折叠的菜单动画
    SvpplyTable 是一个示例项目,旨在实现类似 Svpply 应用程序中的可扩展和可折叠的菜单动画效果。该项目托管在 GitHub 上,地址为 https://github.com/liuminqian/SvpplyTable。 ... [详细]
  • 本文介绍了 Confluence 6 中使用的其他 Cookie,这些 Cookie 主要用于存储产品的基本持久性和用户偏好设置,以提升用户体验。 ... [详细]
  • 如何解决TS1219:实验性装饰器功能可能在未来版本中更改的问题
    本文介绍了两种方法来解决TS1219错误:通过VSCode设置启用实验性装饰器,或在项目根目录下创建配置文件(jsconfig.json或tsconfig.json)。 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 从零开始编译Linux系统:第16章 全新起点
    本章将详细介绍如何从零开始编译一套完整的Linux系统,涵盖关键组件如glibc库的介绍及其重要性。通过本文,读者将了解从源代码构建Linux系统的全过程。 ... [详细]
  • JavaSE For循环入门示例
    本文将介绍Java中For循环的基本概念和使用方法,通过几个简单的示例帮助初学者更好地理解和掌握For循环。 ... [详细]
  • 第七卷《英才》强调,即使有良药,若不对症,效果也不如低等药物;即使有贤才,若不适用,效果也不如普通人。文中通过多个比喻,阐述了人才使用的重要性,指出合适的人才在适当的时间和场合才能发挥最大效用。 ... [详细]
  • packagecom.panchan.tsmese.utils;importjava.lang.reflect.ParameterizedType;importjava.lang. ... [详细]
  • 蒜头君的倒水问题(矩阵快速幂优化)
    蒜头君将两杯热水分别倒入两个杯子中,每杯水的初始量分别为a毫升和b毫升。为了使水冷却,蒜头君采用了一种特殊的方式,即每次将第一杯中的x%的水倒入第二杯,同时将第二杯中的y%的水倒入第一杯。这种操作会重复进行k次,最终求出两杯水中各自的水量。 ... [详细]
  • 经过一年的思考,我发现自己对开发的兴趣并不浓厚,而对算法研究则更加热衷。本文将探讨开发与算法之间的本质差异,并分享我的未来学习计划。 ... [详细]
  • 本文介绍了Java编程语言的基础知识,包括其历史背景、主要特性以及如何安装和配置JDK。此外,还详细讲解了如何编写和运行第一个Java程序,并简要介绍了Eclipse集成开发环境的安装和使用。 ... [详细]
  • Bootstrap 缩略图展示示例
    本文将展示如何使用 Bootstrap 实现缩略图效果,并提供详细的代码示例。 ... [详细]
  • 本文介绍了一种支付平台异步风控系统的架构模型,旨在为开发类似系统的工程师提供参考。 ... [详细]
  • 使用 Git Rebase -i 合并多个提交
    在开发过程中,频繁的小改动往往会生成多个提交记录。为了保持代码仓库的整洁,我们可以使用 git rebase -i 命令将多个提交合并成一个。 ... [详细]
author-avatar
圣峰冰寒_869
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有