javascript - 我是否始终需要应用函数(匿名或其他方式)来为事件处理程序传递 JavaScript 参数?

标签 javascript event-handling

我很难找到有关在 JavaScript 中传递事件参数的完全正确语法的详细信息。看来我总是必须创建一个函数才能从事件处理程序获取函数的参数......而且它看起来很奇怪而且没有必要。下面是示例代码:

function styleSet(id1,id2,styleType)
{
    document.getElementById(id1).style[styleType] = document.getElementById(id2).value;
}

document.getElementById("pFamilyID").onkeyup = function(){styleSet("paraID","pFamilyID","fontFamily")};

该事件可以正常工作,但我创建了一个匿名函数来应用参数。如果我尝试传递如下参数:

element.onkeyup = styleSet("paraID","pFamilyID","fontFamily");

...那么它就不起作用了。所以问题是;当我传递参数时我总是必须创建该函数还是有更有效的方法?

最佳答案

当你做两件不同的事情时它不起作用

工作的函数是一个属性赋值,当事件发生时该属性(函数)被调用

第二个是调用,当您将函数的结果分配给在 keydown 上调用的属性时,该属性不起作用。

请注意,大多数事件驱动函数接收事件作为第一个参数(除其他参数外,请检查参数)。

所以你必须将它包装在一个匿名函数中,或者至少提供一个与 keyup 事件调用的签名相匹配的函数

关于javascript - 我是否始终需要应用函数(匿名或其他方式)来为事件处理程序传递 JavaScript 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15739220/

相关文章:

java - Action初始化的差异

jquery - 从另一个对象的单击事件中手动触发 jQuery 单击事件

c# - 在 jquery 中启用可排序

c# - 基本 GUI 事件处理问题 C#

android - on"XYZ"回调事件如何工作?

javascript - Laravel 4 中的 Jquery Ajax - NotFoundHttpException

javascript - 无法获取 handleClick 函数来调用其他函数,而不是自行完成它们所做的工作

JavaScript 从时间戳开始计数

javascript - 更新表单中的数据。保持可编辑状态。 (与 Redux react ,无 redux-form)

javascript - tf.loadModel 不是函数