Javascript 有没有一种方法可以使;onkeydown“;回程慢一点

Javascript 有没有一种方法可以使;onkeydown“;回程慢一点,javascript,Javascript,我想通过按住向右箭头键来增加一个整数。我创建的函数可以工作,但返回速度太快 document.onkeydown = function (e) { e = e || window.event; if (e.keyCode == '39') { var steps = localStorage.getItem("steps"); if (

我想通过按住向右箭头键来增加一个整数。我创建的函数可以工作,但返回速度太快

document.onkeydown = function (e) {
                e = e || window.event;
                if (e.keyCode == '39') {

                        var steps = localStorage.getItem("steps");
                        if (+steps < 9) {
                            if (+steps === +steps) {
                                localStorage.setItem("steps", +steps + +1)
                            }
                        } else {
                            localStorage.setItem("steps", +steps - +10);
                        }
                        var sss = localStorage.getItem("steps");

                        unicorn.className = "unicorn_" + sss + "";

                        return false;
                }
            }
document.onkeydown=函数(e){
e=e | | window.event;
如果(e.keyCode=='39'){
var steps=localStorage.getItem(“步骤”);
如果(+步骤<9){
如果(+步数===+步数){
setItem(“步骤”、+steps++1)
}
}否则{
setItem(“步骤”、+steps-+10);
}
var sss=localStorage.getItem(“步骤”);
unicorn.className=“unicorn_quot+sss+”;
返回false;
}
}
上面的代码就是我现在的位置。我使用localStorage检查存储的整数,如果匹配,则递增。一旦整数变为9,它将减回到0


谁能看清我做错了什么,或者没有做正确的事?

< P>如果你不希望它执行<代码>太快< /Cord>请考虑把它放在<代码> SETTIMEOUT

var notTooFast = false;
var timeout   = 1000; // change it whatever you want to be

document.onkeydown = function (e) {
  e = e || window.event;
  if (e.keyCode == '39') {

    if (!notTooFast)
    {
      var steps = localStorage.getItem("steps");
      if (+steps < 9) {
          if (+steps === +steps) {
              localStorage.setItem("steps", +steps + +1)
          }
      } else {
          localStorage.setItem("steps", +steps - +10);
      }
      var sss = localStorage.getItem("steps");

      unicorn.className = "unicorn_" + sss + "";

      notTooFast = true;
      setTimeout(function () {
          notTooFast = false;
      }, timeout);

      return false;
    }
  }
}
var notTooFast=false;
变量超时=1000;//改变它,无论你想成为什么
document.onkeydown=函数(e){
e=e | | window.event;
如果(e.keyCode=='39'){
如果(!不太快)
{
var steps=localStorage.getItem(“步骤”);
如果(+步骤<9){
如果(+步数===+步数){
setItem(“步骤”、+steps++1)
}
}否则{
setItem(“步骤”、+steps-+10);
}
var sss=localStorage.getItem(“步骤”);
unicorn.className=“unicorn_quot+sss+”;
notTooFast=true;
setTimeout(函数(){
notTooFast=假;
},超时);
返回false;
}
}
}

您还可以使用闭包手动跟踪时间:

document.onkeydown = (function () {

    var T0 = Date.now();

    return function (event) {
        if (Date.now() - T0 > 500) {
            console.log("doing my thing over here", Math.random());
            T0 = Date.now();
        }
    }
})();

setTimeout(function(){//您想要延迟的代码在这里},500);嗯,我之前用过一个超时,但是只有100,不是500。我现在就试一下,我建议避免重新发明轮子,谢谢你的回答,我不知道我可以用这种方式使用布尔型的超时。你今天学我了。