未捕获的TypeError:对象#<object>的属性'which'不是函数</object>

时间:2013-02-23 13:10:33

标签: javascript jquery switch-statement

这段代码会在Chrome的JavaScript控制台&amp;我不知道为什么。谷歌搜索有类似问题的人后,我还没有找到任何D:

错误消息表明问题出在event.which()上,但我没有看到我的使用方式与预期不同,其他类似的人似乎没有问题。

$(document).keypress(function(event) {
    switch (event.which()) {            
        case 38 :   keyNorthPressed = true;
                    break;
        case 39 :   keyEastPressed = true;
                    break;
        case 40 :   keySouthPressed = true;
                    break;
        case 41 :   keyWestPressed = true;
                    break;
    }
});

提前致谢。

1 个答案:

答案 0 :(得分:1)

答案here

有两种方法可以检索事件密钥代码:

event.keyCode or event.which

您的代码应为:

$(document).keypress(function(event) {
    var code = event.keyCode || event.which;
    switch(code) {       
        case 38 :   keyNorthPressed = true;
                    break;
        case 39 :   keyEastPressed = true;
                    break;
        case 40 :   keySouthPressed = true;
                    break;
        case 41 :   keyWestPressed = true;
                    break;
    }
});

event.keyCode和event.which是属性,而不是方法,你不能用()调用它们。