Javascript 未捕获类型错误:属性';其中';对象#<;对象>;这不是一个函数
这段代码在Chrome的JavaScript控制台中产生了这个错误&我不知道为什么。在谷歌搜索了有类似问题的人之后,我没有发现任何D: 错误消息表明问题出在Javascript 未捕获类型错误:属性';其中';对象#<;对象>;这不是一个函数,javascript,jquery,switch-statement,Javascript,Jquery,Switch Statement,这段代码在Chrome的JavaScript控制台中产生了这个错误&我不知道为什么。在谷歌搜索了有类似问题的人之后,我没有发现任何D: 错误消息表明问题出在事件。which()上,但我看不出我使用它与预期有什么不同,其他类似的人似乎没有问题 $(document).keypress(function(event) { switch (event.which()) { case 38 : keyNorthPressed = true;
事件。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;
}
});
提前谢谢。答案
有两种可能的方法检索事件密钥代码:
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.event是属性,而不是方法,您不能用()调用它们。答案
有两种可能的方法检索事件密钥代码:
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是属性,而不是方法,您不能用()调用它们。错误告诉您
event.which
不是函数,查看一下就可以确认这一点。示例显示了如何使用它。好吧,我的印象是开关语句不一定需要函数,但值可以工作,不是吗?当然,您可以将任何值传递给开关。该问题与开关
无关。您正试图调用事件,但它不是一个函数。只需执行switch(event.which){
。其他示例:var foo={bar:5};
foo.bar()
就会抛出相同的错误,因为foo.bar
是一个数字,而不是一个函数。对,这很有效。谢谢。我对它为什么尝试调用event.which
而不是在代码中调用event.which()
然后呢?我不明白。将()
放在符号后面总是被解释为函数调用。如果符号没有引用函数,您会收到一个错误,因为只能调用函数。它正在尝试调用事件。这是因为您通过添加()event.which
之后的错误告诉您event.which
不是一个函数,查看一下就可以确认这一点。示例演示了如何使用它。好的,我的印象是switch
语句不一定需要函数,但值可以工作,不是这样吗?当然,您可以传递任何值值设置为开关
。问题与开关
无关。您正在尝试调用事件。它
,但它不是一个函数。只需执行开关(event.which){
。其他示例:变量foo={bar:5};
foo.bar()
会抛出相同的错误,因为foo.bar
是一个数字,而不是一个函数。是的,它可以工作。谢谢。我很想知道它为什么尝试调用事件。哪个而不是像在代码中那样,事件。哪个()
那么?我不明白。放置()
符号后始终被解释为函数调用。如果符号未引用函数,则会出现错误,因为只能调用函数。它试图调用事件。which
,因为您通过在事件之后添加()
命令它这样做。which
。