JS从键盘事件中读取变量

时间:2016-02-23 00:47:51

标签: javascript jquery html5

欢迎,我有一个问题。我想使用键盘控制对象移动。我看到的代码看起来像这样

function ruszajLe(){

    $(document.body).on('keydown', function(x) {
        switch (x.which) {

            case 37:
                czyLe = true;
                facing = "LEWO";
                console.log('left arrow key pressed!');
                console.log('czyLe', czyLe, '  ', 'kierunek to ', facing);           
            break;
        }
    });

我还有一个看起来相同的keyup处理程序,但是将变量czyLe更改为false。

我有两个问题:

  1. 有没有办法从变量“czyLe”或“facing”读取值并将它们转移到另一个函数?

  2. 此代码是否异步执行?如果没有,我怎么能让它以那种方式执行?

  3. 干杯

    小编辑

    我想在函数内部读取我的变量值,但是console.log没有显示任何消息:

    function poruszanie(){
        if (czyLe === true) {
            console.log('porszanie dziala');
        }
    }
    

1 个答案:

答案 0 :(得分:0)

请参阅以下上述两个问题的回答:

  1. 因为您没有定义czyLefacing变量,所以它们将被创建为全局变量。这意味着它们可以通过您想要获取这些值的任何其他键盘事件进行访问,对于想要访问这些值的任何其他逻辑也是如此。
  2. 这里的代码是非阻塞的,因此,社区定义是异步的。事件侦听器仅在触发事件时执行。您的代码将在上述代码之外正常执行。同步和阻塞Javascript意味着你的脚本会停止,直到有人按下一个键(这不是发生的事情)。从技术上讲,你可以像往常一样调用事件监听器,但它们通常被称为异步。
  3. 修改

    我刚刚看到你更新了你的问题。问题是您的全局变量仅在触发keydown事件时创建/更新。这里的修复是在ruszajLe函数之外定义它们,所以将它们放在任何创建函数之外的Javascript顶部。

    var czyLe = false;
    var facing = "";
    

    然后,您的函数将返回上面的默认值或从事件中设置的值。