2013-04-04 62 views
0

我目前在學習javascript。我創建了一個計算器來查找投資未來的價值。當它顯示future value時,它給我一個不正確的值。我已經檢查了幾次,但它仍然給我一個錯誤。此外,如果利息小於0或大於20,但我沒有顯示任何信息,則設置了警報。如何在必要時能夠正確顯示正確的未來價值和警報? Example用javascript計算投資值

的Javascript

var $ = function (id) { 
    return document.getElementById(id); 
} 

var calculate_click = function() { 
    var investment = parseFloat($("investment").value); 
    var annualRate = parseFloat($("rate").value) /100; 
    var years = parseInt($("years").value); 

    $("futureValue").value = ""; 

    if (isNaN(investment) || investment <= 0) { 
     alert("Investment must be a valid number\nand greater than zero."); 
    } else if(isNaN(annualRate) || annualRate <= 0 || annualRate > 20) { 
     alert("Annual rate must be a valid number\nand less than or equal to 20."); 
    } else if(isNaN(years) || years <= 0 || years > 50) { 
     alert("Years must be a valid number\nand less than or equal to 50."); 
    } else { 
     //var monthlyRate = annualRate/12; 
     //var months = years * 12; 
     var futureValue = 0; 

     for (i = 1; i <= years; i++) { 

      futureValue = (futureValue + investment) * 
       (1 + annualRate); 

     } 
     $("futureValue").value = futureValue.toFixed(2); 
    } 
} 

var clear_click = function() { 
    $("investment").value = ""; 
    $("rate").value = ""; 
    $("years").value = ""; 
    $("futureValue").value = ""; 
} 

window.onload = function() { 
    $("calculate").onclick = calculate_click; 
    $("investment").focus(); 
    $("clear").onclick = clear_click; 
} 
+0

您可以給出示例輸入和預期輸出以及您正在獲得的輸出嗎? – Jon 2013-04-04 21:15:01

+0

在附註中,我認爲你沒有檢查'annualRate'的正確值,因爲你所做的第一件事是除以'100',所以你應該檢查'> .2' – Jon 2013-04-04 21:22:21

回答

1

使用.value不正確,它的JavaScript,而這是jQuery的,嘗試添加在前面的#和使用.val()代替。

它與此類似:

jquery function val() is not equivalent to "$(this).value="?

編輯

他沒有使用jQuery,忽略這一點。

+0

但是這不是' t JQuery,檢查第一個函數賦值:'var $ = function(id){ return document.getElementById(id); }' – Jon 2013-04-04 20:56:24

+0

你有沒有這樣做的原因?該函數無法正常工作請參閱 - http://jsfiddle.net/avXkd/爲什麼不使用jquery,在「投資」等前面添加一個散列並使用.val()?我不介意這是否是一項任務,所以你不告訴? – Niall 2013-04-04 20:59:56

+0

這是javascript。 @Jon是正確的 – 2013-04-04 21:00:06

1

如果我正確記住將來的價值,那麼你就搞亂了公式,這就是爲什麼你沒有得到預期的價值。

變化:

for (i = 1; i <= years; i++) { 
     futureValue = (futureValue + investment) * 
      (1 + annualRate); 
    } 

要:

futureValue = investment*Math.pow((1+annualRate), years); 

不明白爲什麼你是通過每年循環,但應該還是基於權力的年(數量,如果我請記住是否正確)