Javascript 为什么不显示警报?
下面是关于HTML5游戏开发的教程。我不明白为什么当我按下键盘上的Javascript 为什么不显示警报?,javascript,Javascript,下面是关于HTML5游戏开发的教程。我不明白为什么当我按下键盘上的键时,这段代码不会显示警报 var canvas = document.getElementById("mainCanvas"); var context = canvas.getContext("2d"); var keys = []; window.addEventListener("keydown", function(e) { keys[e.keyCode] = true; }, false); window.a
键时,这段代码不会显示警报
var canvas = document.getElementById("mainCanvas");
var context = canvas.getContext("2d");
var keys = [];
window.addEventListener("keydown", function(e) {
keys[e.keyCode] = true;
}, false);
window.addEventListener("keyup", function(e) {
delete keys[e.keyCode]
}, false);
if (keys[38]) alert("yep");
Chrome控制台清楚地显示键[38]
为真
并键入if(键[38])警报(“yep”)控制台中的代码>显示警报。我想我在这里错过了一件基本的事情(或者根本上是愚蠢的)。如果JS代码中没有明显的错误,我很乐意提供更多信息
谢谢 if
将在勾号结束时调用if。一旦你离开,听众就会开始开火。因此,在执行if
时,不可能设置键
数组
之后将调用的唯一代码片段是传递给keydown
和keydup
事件的两个回调。如果您想对这些事件做出反应,您的代码应该位于这些回调中。将在勾选结束时调用If
。一旦你离开,听众就会开始开火。因此,在执行if
时,不可能设置键
数组
之后将调用的唯一代码片段是传递给keydown
和keydup
事件的两个回调。如果您想对这些事件做出反应,您的代码应该驻留在这些回调中。您需要将代码(警报)放入事件侦听器中,如下所示:
window.addEventListener(“向下键”,函数(e){
如果(e.keyCode==38){
警报(“布亚卡”);
}
},假)代码>您需要将代码(警报放入事件侦听器中,如下所示:
window.addEventListener(“向下键”,函数(e){
如果(e.keyCode==38){
警报(“布亚卡”);
}
},假)代码>你认为什么/什么时候if(键[38])警报(“yep”)代码>正在做什么?如果在您键入任何键之前运行。更重要的是,您认为它是在何时运行的。当javascript引擎解析该行时,keys[38]
仍然没有定义。2011年的MacBook Pro与此无关。您正在添加事件侦听器。只有当事件侦听器触发时(意味着按下一个键),函数(e){…}
代码才会运行。而你的if(键…
代码在事件侦听器触发函数之外。@BartekBanachewicz我用其他词说的和你回答的一样。你认为if(键[38])警报是什么/什么时候
正在做什么?如果在你键入任何键之前运行。更重要的是,你认为它什么时候在做。当javascript引擎解析该行时,键[38]
仍然没有定义。而2011 MacBook Pro与此无关。你正在添加事件监听器。只有当事件监听器触发时(意味着按下一个键)函数(e){…}
代码是否会运行。而您的if(key…
代码不在事件侦听器触发函数的范围内。@BartekBanachewicz我用其他词说的与您的回答相同。