2

假设我有一个这样的代码块:

keysPressed = new Object();
document.onkeydown = function(e) {
    keysPressed[e.charCode] = true;
}
document.onkeyup = function(e) {
    keysPressed[e.charCode] = false;
}

理论上,这应该给我留下一个对象,我可以在其中keysPressed.w检查当前是否按下了“w”。

我可以在我的 JavaScript 控制台中看到所有属性都像正常一样定义,但是每当我尝试访问它们时,它都会说它们是未定义的。我怀疑这些属性在定义它们的函数内具有本地范围,并且无法在其他地方访问。有没有办法在不创建一大堆全局变量的情况下解决这个问题?

提前致谢!

4

1 回答 1

1

这里的问题是charCode返回一个数值。因此,与其为它添加一个属性,不如为w它添加一个属性 number 87。您想在String.fromCharCode这里获取字符串表示形式

keysPressed = new Object();
document.onkeydown = function(e) {
    keysPressed[String.fromCharCode(e.charCode)] = true;
}
document.onkeyup = function(e) {
    keysPressed[String.fromCharCode(e.charCode)] = false;
}

现在像下面这样的代码将起作用(注意使用大写 W 而不是小写)

if (keysPressed.W) {
  ...
}
于 2012-04-07T00:08:30.413 回答