setTimeout用于检查按下的键的功能(javascript)

时间:2018-08-21 12:50:20

标签: javascript events timeout

我想用javascript注册按键,但要等到某个时间过去。最终,我想使视频停止播放,记录键值和时间戳,但是为了使代码更简单,我没有在此处包括此功能。

我尝试将功能checkKeyPress实现到功能setTimeout中,该功能不起作用,我也无法弄清楚为什么,因为这两个功能都是独立运行的。但是,在下面的代码中,该代码记录的是“未定义”,而不是所按下键的值。

// set the time offset to be 5000 ms
   var timePress = 5000;

   window.addEventListener("keydown", checkKeyPress, false); //call checkKeyPress upon key press
   var keynum; // initialize the variable 'keynum'


   function checkKeyPress(e) {  //define the function checkKeyPress
       if(window.event) {  // in Internet Explorer, different browsers may need different event calls              
         keynum = e.keyCode;
       } else if(this.which){  // in Netscape/Firefox/Opera                   
         keynum = e.which;
       }

       // just for checking, log the value of keynum
       console.log(keynum)

       // if the keys 0 or 1 are pressed
       if (keynum == '48' || keynum == '49'){ 
         alert(String.fromCharCode(keynum));
       }
   }

   setTimeout(checkKeyPress('keydown'), timePress);

1 个答案:

答案 0 :(得分:0)

最后一行可能应该是

setTimeout(function() { 
    checkKeyPress('keydown'); 
}, timePress);

请注意,我不是在使用匿名函数调用checkKeyPress,

注意,ES6版本应该是

setTimeout( ()=> { 
    checkKeyPress('keydown'); 
}, timePress);