2017-11-30 2 views
0

누군가가 키를 누를 때 감지 할 코드가 있습니다. 코드를 놓으면 키를 누르는 코드가 코드에서 삭제됩니다. 온라인에서 찾은 정보를 사용하여 몇 가지 코드를 작성하려고했습니다. 는 여기에 지금까지이 작업은 다음과 같습니다Keydown 및 keyup 이벤트 리스너가 올바르게 작동합니다.

var down = {}; 
    document.addEventListener("keydown", function(evt) { 
     down[evt.keyCode] = true; 
     console.log(down) 
    }); 
    document.addEventListener("keyup", function(evt) { 
     delete down[evt.keyCode]; 
    }); 
var p = 0 
if (down(65) == 65 && p - 1 >= 0) { 
     p -= 1; 
    } 
    if (down(65) == 68 && p + 1 <= 9) { 
     p += 1; 
    } 

콘솔가를 말하는 것은 함수가 아닙니다 유지합니다. 키 코드를 읽는 방법은 무엇입니까?뿐만 아니라 키를 들어 올린 후 키 코드 인스턴스를 삭제하는 방법은 무엇입니까?

+1

음'down'가 없다 * * 함수이다; 그것을 {}}로 초기화했습니다. 'down (65)'는 함수를 호출하려고 시도하는데, 작동하지 않습니다. 당신은'down [65] '을 원한다. – Pointy

+0

그렇다면 어떻게 그 가치를 읽을 수 있을까요? – Bestlogo56

+0

'down (65) == 65 '를'down [65]'로 바꾼다 – gurvinder372

답변

1

귀하의 down 값에 올바르게 액세스하고 있지 않습니다.

var down = {}; 
 

 
document.addEventListener("keydown", function(evt) { 
 
    down[evt.keyCode] = true; 
 
    console.log(down) 
 
}); 
 

 
document.addEventListener("keyup", function(evt) { 
 
    delete down[evt.keyCode]; 
 
}); 
 

 
var p = 0; 
 

 
if (down[65] === 65 && p - 1 >= 0) { 
 
    p -= 1; 
 
} 
 
if (down[65] == 68 && p + 1 <= 9) { 
 
    p += 1; 
 
}

+0

은 쓸모없는 첫 번째 줄이 아닐까요? –

+0

'var down = {};'을 말하는 겁니까? –

+0

예 의미있는 의미가 없습니다 –

1

그것은 down['65']하지 down(65)의 : 오브젝트로, 브래킷 또는 점 표기법 길을 가야하는 것입니다.

down['65'] 비교하기 전에 존재하는 경우 또한 테스트해야합니다 :

if (down['65'] && down['65'] == 65 && p - 1 >= 0) { 
    p -= 1; 
} 
if (down['65'] && down['65'] == 68 && p + 1 <= 9) { 
    p += 1; 
} 
1

그냥 아래로 변경 (65) 아래로 [65]이 값의 얻을 수 있습니다.

down(65) '다운 불리는 어레이의 인덱스 (65)의 값에 액세스하는 기능

down[65]로 다운 호출

+0

하지만 OP는 배열이 아니라 객체로 'down'을 선언 했으므로 색인이 전혀 없습니다. 대신 키와 키가 문자열이므로 '65'가 아니라 '65''이어야합니다. –

관련 문제