将参数传递给函数,同时保留事件处理程序

时间:2015-03-23 07:42:38

标签: javascript function events parameters

可能有人问过,但是做了一个简短的搜索,我找不到答案。

我正在创建一个处理用户事件的函数,我不知道如何将参数传递给函数,而不会破坏事件处理程序。

这是我的代码:

function keydown(e) {
e = e || window.event;
if (e.keyCode == '38' || e.keycode == '40' || e.keyCode == '37' || e.keyCode == '39')
    e.preventDefault();

switch(e.keyCode){
    case 38: //Up
        console.log('UP');
        break;
    case 40: //Down
        console.log('DOWN');
        break;
    case 37: // Left
        console.log('LEFT');
        break;
    case 39: //Right
        console.log('RIGHT');
        break;
}}

我想要这样的事情:

    function keydown(e, myParam) {
        console.log(myParam); // Console logging the second parameter
        e = e || window.event;
        if (e.keyCode == '38' || e.keycode == '40' || e.keyCode == '37' || e.keyCode == '39')
            e.preventDefault();

        switch(e.keyCode){
            case 38: //Up
                console.log('UP');
                break;
            case 40: //Down
                console.log('DOWN');
                break;
            case 37: // Left
                console.log('LEFT');
                break;
            case 39: //Right
                console.log('RIGHT');
                break;
        }
    }

有人有任何建议吗?

1 个答案:

答案 0 :(得分:1)

您可以使用闭包:

function keydown(param) {
  return function(e) {
    console.log(param)
    ...
  }
}

elem.addEventListener('keydown', keydown(param))