如何将参数传递给绑定方法?绑定与匿名方法

时间:2011-11-09 00:13:48

标签: javascript

我尝试使用下面带有参数的方法替换方法名称,但这不起作用。

// just a minimizer method

function m5(a,b)
  {
  return document.getElementById(a).onkeypress=b;
  }

// On page initialization thse methods are bound to text input boxes

m5('signin_pass',bind_enter_key(event,interface_signin));  // this does not work
m5('upload_file',bind_file_upload);

3 个答案:

答案 0 :(得分:2)

您可以使用匿名函数执行此操作,该函数使用正确的参数调用函数:

// just a minimizer method

function m5(a,b) {
  return document.getElementById(a).onkeypress=b;
}

// On page initialization these methods are bound to text input boxes

m5('signin_pass', function(event) {bind_enter_key(event,interface_signin)});  // this does not work
m5('upload_file', bind_file_upload);

这将创建一个匿名函数,该函数作为函数传递给m5,匿名函数使用适当的参数调用函数。

答案 1 :(得分:0)

您的bind_enter_key函数返回什么? 它应该在您将其分配给onkeypress事件时返回一个函数。如果你想在keypress事件上使用预定义的参数调用bind_enter_key函数,那么你需要构建一个闭包:

m5('signin_pass',function(event){
  bind_enter_key(event,interface_signin);
});

请注意,我相信bind_enter_keyinterface_signin是全球性的,并且可以访问。

答案 2 :(得分:0)

m5('signin_pass',bind_enter_key(event,interface_signin));  // this does not work
//first argument is a string, works when passed to getElement..
//second argument is the result of a function call bind_enter_key.
//if the function returns something other than a function, the assignment to a handler will fail

m5('upload_file',bind_file_upload);
//second art is a function, as it should be