我收到这个错误![函数之外的''return'语句]

exo*_*boy 8 javascript internet-explorer-7

我正在为客户端创建一个表单验证器,并且只在Internet Exploder(Explorer)7/8中遇到这个奇怪的错误....

'return' outside of function, line 1, char 1

当然,第1行没有代码,这是一个简单的评论声明.并且没有任何东西可以用它来绞尽脑汁.所以我知道这只是一个调试错过直接.

我一直在拔头发,以了解这里可能出现的问题......

我已经排除了显而易见的:循环中的return语句,单个函数中的返回语句太多,实际上在合法函数定义之外的任何返回.

发生这种情况时,有没有其他人有过这种情况?

exo*_*boy 15

我知道了!

问题是我使用return语句覆盖我的表单的默认行为,它被分配给一个属性,但它没有放在一个匿名函数内!

我有一个像这样设置的表单元素:

<form name="formname" onSubmit="javascript:validateForm(this);" action="javascript:return false;" method="post" enctype="multipart/form-data">
Run Code Online (Sandbox Code Playgroud)

我需要改变的是动作属性:

… action="javascript:function(){return false};"
Run Code Online (Sandbox Code Playgroud)

它现在完美无瑕!

希望这可以拯救别人免于我经历的地狱.

  • `javascript:`网址是邪恶的; 从不使用它们,特别是对于"动作".如果为非JS用户指出表单确实无用,你可以给它一个无用的动作,如`#`,并使用`onsubmit ="return false"`来阻止它提交(没有`javascript:`前缀是在事件处理程序上需要,这些不是URL;包括它没有任何明智之处.或者,如果您不需要将仅脚本表单字段与任何位置相关联以提交它们,则可以省略表单标记. (4认同)
  • exoboy的回答有点误导.原因`action ="javascript:function(){return false};"`提交表单的块不是因为`return false`位.使用`javascript:function(){return true};`或`javascript:function(){return' pants'};`或`javascript:var foobar;`或`javascript:void(0)可以实现相同的阻塞效果);`.只是想指出这段代码有点误导.它会阻止表单提交,因为javascript:代码什么也不做,什么都不返回,不是因为它声明了一个函数,如果它运行会返回false.它不是(运行)). (2认同)