首页 > 解决方案 > 为什么括号用于在元素的 onClick 标记内调用函数,而不是在元素的 onclick 属性中?

问题描述

我在一本书中读到,在将函数分配给元素的 onclick 属性时,我们不必使用括号。

<input type="button" value="Click" onClick="sayHello();" id="button1">
var b1=document.getElementById("button1");
b1.onclick=sayHello;

为什么我们在上述元素的 onClick 属性中使用括号?

标签: javascriptdom-events

解决方案


因为内联事件(即指定为 HTML 属性)的工作方式。

由于多种原因,它们通常不是一个好主意(请参阅许多相关帖子),但您的问题的答案是这样的。

指定为 HTML 属性的事件以字符串的形式完成。本质上,当单击元素时,将评估指定为属性值的字符串(这应该为您提供关于它们不是一个坏主意的原因之一的线索)。出于这个原因,您可以想到导致以下 JS 运行的事件:

sayHello(); //<-- invoke callback

如果它导致以下运行,则不会发生任何事情:

sayHello; //returns reference to callback, to nowhere

推荐阅读