2017-04-05 34 views
1

現在の価格を計算しているJavaコードのメソッドがあります。これを以下のjavascriptコードで使用します。変数を使用して変数を計算するsetIntervalを使用する

function updatePrice(id, currentPrice){ 

var newPrice = 0; 
var cPrice = currentPrice; 
cPrice = cPrice * 100; 
if(rate == 1){ 
    newPrice = cPrice - 1; 
} 
if(rate == 2){ 

    newPrice = cPrice - 2; 
} 
if(rate == 3){ 

    newPrice = cPrice - 3; 
} 
document.getElementById(id).innerHTML = newPrice/100;; 
return newPrice/100; 
} 



var nPrice = updatePrice('reverse', currentPrice); //The new calculated price, currentPrice is the price first injected into the script 
var timeinterval = setInterval(function() { nPrice = updatePrice('reverse', nPrice); }, 60000); //the nPrice as currentPrice 

私はのsetIntervalを実行するとき分後newPriceは1、2または3(ペンス)によってダウンするために使用されているように、それ自体の上updatePriceで算出newPriceを使用できるようにします。

これはおそらく私がまだ気づいていない非常に単純なものです。

これは意味があることを意味し、必要に応じてさらに詳しい情報をリクエストしてください。

答えて

1

最初の問題は、nPriceを戻り値updatePrice('reverse', nPrice)に設定していないことです。その結果、すべての反復ではnPriceに同じ値が使用され、同じ結果が返されます。

あなたはそれをデクリメントするために取得するので、次のようなコードを変更することができます。

var nPrice = updatePrice('reverse', currentPrice); 
var timeinterval = setInterval(function() { nPrice = updatePrice('reverse', nPrice); }, 60000); 

をしかし、あなたはあなたのソリューションを最適化するために変更することができますより多くのものがあります。

function updatePrice(id, currentPrice, rate){ 
 
    var newPrice = 0; 
 
    var cPrice = Number(currentPrice) * 100; 
 
    newPrice = ((cPrice - rate)/100).toFixed(2); 
 
    document.getElementById(id).innerText = newPrice; 
 
    timeout = setTimeout(function() { 
 
     updatePrice(id, newPrice, rate); 
 
    }, 1000); 
 
} 
 

 
var rate = 1; 
 
var currentPrice = 10; 
 
var timeout = null; 
 
// The new calculated price, currentPrice is the variable 
 
// first injected into the script from jsp 
 
updatePrice('reverse', currentPrice, rate);
<div id="reverse"></div>

あなたの率はあなたが減少したい金額と一致しているので、文はrateの異なる値を処理する場合は持っている必要はありません。単にcPrice - rateと言うことができます。

グローバル変数を更新または追跡する必要がないように、setIntervalではなく再帰的なsetTimeoutを使用することもできます。

+0

お手数をおかけしていただき、ありがとうございます。私が直面している問題は、自動的に値下げする必要があるということです(これがsetIntervalを使用している理由です)。しかし、これはやっているようです。私は値を変更するためにページを更新する必要があります。何か案は。 – HazardAGuess

+1

@HazardAGuess currentPriceとrateが定義されている限り、私のコードはまさにそれを行うでしょう。私はあなたのためのデモを作成し、いくつかのベストプラクティスに合うように少し働いている方法を変更します。 – mhodges

+0

ご協力ありがとうございました@mhodges – HazardAGuess

関連する問題