onclick的实现
Posted
技术标签:
【中文标题】onclick的实现【英文标题】:Implementation of onclick 【发布时间】:2012-11-28 16:39:53 【问题描述】:假设我们有:
<input type="button" name="button" value="Validate Payment" onclick="Validate()" />
我们可以把onclick放进去:
onclick="Validate"
onclick="Validate()"
onclick="Validate();"
我的问题是这3个实现有什么区别
【问题讨论】:
我假设您是作为 html 元素的属性内联执行此操作的? 欢迎来到 Stack Overflow。您可以使用
工具栏按钮格式化源代码,并在底部预览面板中查看它的外观(这次我已经为您完成了)。
不同的是第一个不会做任何事情。
附带说明,您的所有三个示例都是不好的做法。 Event handlers should always be bound in javascript.
【参考方案1】:
-
不会执行函数,会返回函数(试试:
console.log(Validate)
)
将执行函数。
将和 #2 一样执行函数。
所以在功能上,#2 和 #3 没有区别。
请注意,内联事件处理程序是不好的做法,like mentioned in this comment by jbabey。
【讨论】:
【参考方案2】:onclick="Validate();" 的区别并且 onclick="Validate()" 不存在。分号在 javascript 中是可选的,因此您的代码将是相同的。
要了解onclick="Validate" 和其他两者的区别,需要对Javascript 中括号的使用有所了解。
基本上,
onclick="Validate()"
将执行函数“Validate”并返回该函数返回的任何内容。
onclick="Validate"
将返回实际函数“Validate”。
查看这里以获得更完整的解释:javascript syntax: function calls and using parenthesis
【讨论】:
其实分号是用来分隔命令的,如果传递了多个函数调用就需要。 但是在上面的实现中,分号没有区别。【参考方案3】:函数名后面的括号()
表示“void”,至少在默认情况下,这是正确执行函数所必需的。在某些情况下,您需要在这些括号之间输入一些内容,这称为与函数一起“传递值”。
因为这(“无效”的东西)对于许多类似的编程语言(php、Actionscript 等)来说几乎但不完全相同,而且它是一种模糊的东西,我不能告诉你这正是 JS 中的用途。
两者的区别
onclick="Validate()"
和
onclick="Validate();"
没有任何功能。分号;
将代码片段彼此分隔,因此如果您要在 Validate() 函数之后调用另一个函数,则需要使用分号。在这种情况下,onclick="Validate()"
和
onclick="Validate();"
.
【讨论】:
【参考方案4】:它们之间没有区别。
【讨论】:
如果你不知道就嘘。 其实没有区别,你的回答基本上说的一模一样。与其他几个回答者(似乎)不同,我实际上测试了第一种方式,它确实有效(至少在 chrome 25 中)。 我收回;我在 chrome 中的现有页面上尝试了它并且它工作,但是我创建了一个页面来测试它并且它当时没有工作。道歉;它可能取决于文档模式。 好吧,没有难过的感觉 :) 请参阅我对问题的回答,了解有关差异的基本(我也不是这方面的专家)解释。以上是关于onclick的实现的主要内容,如果未能解决你的问题,请参考以下文章