假设我有一段这样的代码:
keysPressed = new Object();
document.onkeydown = function(e) {
keysPressed[e.charCode] = true;
}
document.onkeyup = function(e) {
keysPressed[e.charCode] = false;
}
这理论上应该给我一个对象,我可以去keysPressed.w
检查当前是否按下'w'。
我可以在我的JavaScript控制台中看到所有属性都是正常定义的,但每当我尝试访问它们时,都会说它们是未定义的。我怀疑属性在定义它们的函数内部具有局部范围,并且不能在其他地方访问。有没有办法解决这个问题而不创建一大堆全局变量?
提前致谢!
答案 0 :(得分:1)
这里的问题是charCode
返回一个数值。因此,不是为w
添加属性,而是为数字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) {
...
}