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的实现的主要内容,如果未能解决你的问题,请参考以下文章

jquery怎样修改onclick属性值

java onclick事件

button onclick实现跳转的常用方法

js中onclick定义问题

如何让一个按钮自动触发,自动执行onclick鼠标单击事件. 默认已点击.

安卓笔记のonClick实现的四种写法