2017-06-26 15 views
-1

レベルアップするときにfarmerTimeが更新されない理由がわかりません。レベルをfarmingLevelに追加するボタンがあります。Javascript setInterval time not working

window.setInterval(function() { 
      farmerTime = 2500; 
      farmerLevel = 3; 

      x = farmerTime; 
      y = farmerLevel; 
      z = x/y; 
      farmerTime = z; 

      if (farmers >= 1) { 
        a = farmers; 
        b = potatoes; 
        c = a * 1; 
        d = b + c; 
        potatoes = d; 
      } 
    }, farmerTime);` 
+1

'setInterval'の前に 'framerTime'を定義してください。インターバル時間を動的に変更したい場合は、まず 'clearInterval'を実行してからそれを再起動する必要があります。 – Shubham

+3

間隔が設定されると、間隔を空けるまでその間隔でチェックされます。間隔を変更したい場合は、現在のものを 'clearInterval'する必要があります(あなたに参照を保存して欲しい!)、' setInterval'を新しい時刻で行う必要があります。 –

答えて

0

使用する前にfarmerTimeを定義する必要があります。あなたの場合、setIntervalの機能の前に。また、farmerLevelを変更する場合は、setinterval機能ではなく、別の場所に変更する必要があります。

<button type="button" onclick="setFarmerLevel(farmerLevel + 1);">Change level </button> 

そして間隔の事のためのコード:

var farmerTime = 2500; 
var farmerLevel = 1; 

var setFarmerLevel = function (level) { 
    farmerLevel = !level ? 1 : level; 
    farmerTime = farmerTime/farmerLevel; 
    clearInterval(farmerInterval); 
    farmerInterval = window.setInterval(run, farmerTime); 
}; 

var run = function() { 
    if (farmers >= 1) { 
     a = farmers; 
     b = potatoes; 
     c = a * 1; 
     d = b + c; 
     potatoes = d; 
    } 
}; 

var farmerInterval = window.setInterval(run, farmerTime); 

UPDATE私がするsetIntervalの機能時間は実行時の変更はできません忘れて

レベルの例を変更します、コードは今更新されます。