Javascript Onkeydown循环直到变量= false

时间:2018-02-17 18:53:19

标签: javascript

默认情况下可以说var myVariable = true。现在我如何按下右键按下右键箭头,执行此代码:

{{1}}

并将继续执行,直到myVariable = false再次......

4 个答案:

答案 0 :(得分:0)

您可以使用Jquery轻松完成此操作:

    <script>$( "body" ).keydown(function( event ) {
  if ( event.which == 39) {
     event.preventDefault(); 

     document.write("Right");
  }
});</script>

答案 1 :(得分:0)

仅使用JavaScript(确保单击画布进行测试):

var writeIt = true;

document.onkeydown = function(e) {
    switch (e.keyCode) {
        case 39:
            if (writeIt) {
              document.write("Right");
            }
            break;
    }
};

答案 2 :(得分:0)

将事件keydown绑定到您的body元素。

&#13;
&#13;
var myVariable = true
document.body.addEventListener('keydown', function(e) {
  if (myVariable && e.keyCode === 39) {
    document.write("Right");
    myVariable = false;
    console.log('First time!');
  }
});
&#13;
<h1>Click here and then right arrow</h1>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

我认为你要找的是这样的:

let arrowRight = null;

function keyChange(type, event) {
  if (type === 'down' && event.keyCode === 39) {
    if (!arrowRight) {
      arrowRight = setInterval(function() {
        document.body.append('right');
      }, 500);
    }
  }
  else if (type === 'up') {
    if (arrowRight) {
      clearInterval(arrowRight);
      arrowRight = null;
    }
  }
}

document.addEventListener('keyup', keyChange.bind(null, 'up'));
document.addEventListener('keydown', keyChange.bind(null, 'down'));

但是因为我正在向文档中添加监听器而document.write实际上清除了文档,如果您正在编写的文档已经关闭(加载),您将不得不使用另一种方法来写入您的文档(如document.body.append)。

您可以详细了解document.write here