2

Я вызываю функцию test() с вызовом onload из тела. Затем в тестовой функции я вызываю keyPushed (e), но код, который у меня есть, не регистрирует никаких ключей. Кроме того, консоль говорит, что моя ценность e не определена, не уверен, почему она работает в примере, который я получил от here. Что я делаю не так?Javascript addEventListener для keyup не регистрирует значения клавиш

HTML:

<body onload="test()"> 

</body> 

JS:

test = function(){ 
    console.log("test"); 
    document.addEventListener("keyup", keyPushed(e)); 
} 
keyPushed = function(e){ 
    var keyValue = e.keyCode ? e.keyCode : e.charCode; 
    alert(keyValue); 
} 

Codepen

+1

Pass саму функцию, предоставляя только его имя - 'addEventListener ("KeyDown", keyPushed);'. С дополнительной скобкой вы вызываете его один раз немедленно и в лучшем случае передаете его значение 'return' в' addEventListerner() '. –

ответ

4

изменения

document.addEventListener("keyup", keyPushed(e)); 

к

document.addEventListener("keyup", keyPushed); 

вам нужно зарегистрировать обработчик событий с addEventListener() не называть их непосредственно