我是否总是必须应用函数(匿名或其他)来传递事件处理程序的JavaScript参数?



我很难找到关于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时调用的属性时,它不起作用。

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

必须封装在匿名函数中或者至少提供一个与keyup事件调用签名匹配的函数

也许你把函数的声明和函数的调用搞混了。this.onkeyup =函数(params){…}只是一个声明,当你调用它时,使用" this.onkeyup(params);"。以这种方式编写函数的目的是为了保持OO风格。在js中,面向对象风格与java或c#略有不同。

最新更新