javascript - 为什么括号用于在元素的 onClick 标记内调用函数,而不是在元素的 onclick 属性中?
问题描述
我在一本书中读到,在将函数分配给元素的 onclick 属性时,我们不必使用括号。
<input type="button" value="Click" onClick="sayHello();" id="button1">
var b1=document.getElementById("button1");
b1.onclick=sayHello;
为什么我们在上述元素的 onClick 属性中使用括号?
解决方案
因为内联事件(即指定为 HTML 属性)的工作方式。
由于多种原因,它们通常不是一个好主意(请参阅许多相关帖子),但您的问题的答案是这样的。
指定为 HTML 属性的事件以字符串的形式完成。本质上,当单击元素时,将评估指定为属性值的字符串(这应该为您提供关于它们不是一个坏主意的原因之一的线索)。出于这个原因,您可以想到导致以下 JS 运行的事件:
sayHello(); //<-- invoke callback
如果它导致以下运行,则不会发生任何事情:
sayHello; //returns reference to callback, to nowhere
推荐阅读
- flutter - 在我的虚拟模拟器应用程序上工作正常,但是当生成 apk 文件时不能正常工作 - Flutter
- typescript - 填充角度材料自动完成中的值不起作用
- numpy - 是否有像 np.fill() 这样的 numpy 函数,但对于数组作为填充值?
- pointers - 定义结构时何时使用指针
- javascript - 使用来自另一个对象的过滤器创建新对象
- sed - 在 MAC (zsh) 上使用 SED 在标记字符串之后获取第一个 jpg
- cocoscreator - 如何在 Cocos Creator 中将一个向量移向另一个向量?
- assembly - 为什么我们不能将 64 位立即数移动到内存中?
- c# - UTF-8 URL 编码
- c# - 从 .Net 框架应用程序中的 .Net Core 库调用方法