2013-04-04 58 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); 

不明白为什么你是通过每年循环,但应该还是基于权力的年(数量,如果我请记住是否正确)