2017-09-01 4 views
2

右矢印キーを押しながら整数を増やしたいと思います。関数iは動作しましたが、速すぎます。"onkeydown"を遅く戻す方法はありますか?

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; 
       } 
      } 

上記のコードは、現在のところです。私は、格納された整数をチェックするためにlocalStorageを使用していて、一致する場合はインクリメントします。整数が9になると、0に引き算されます。

誰かが間違っているのを見ることができますか?

+0

のsetTimeout(関数(){//遅延したいコードをここに入れる}、500); –

+0

hmmm以前はタイムアウトを使用しましたが、500ではなく100だけでした。今すぐお試しください – MrEhawk82

+0

[Lodashの '_.throttle'](https://lodash.com/docs/4.17.4#スロットル)は、それをしたホイール – no1xsyzy

答えて

1

あなたはそれがあなたはまた、手動で閉鎖を使用して時間を追跡することができます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; 
    } 
    } 
} 
+0

を改革するのを避けるために、その答えに感謝しました。私は、ブーリアンでタイムアウトをそのように使用できるかどうかはわかりませんでした。あなたは今日私を学んだ。 – MrEhawk82

2

でそれを配置することを検討し、その後too fastを実行したくない場合は、次の

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(); 
     } 
    } 
})(); 
関連する問題