用javascript计算投资价值

用javascript计算投资价值,javascript,Javascript,我目前正在学习javascript。我创建了一个计算器来寻找投资的未来价值。当它显示未来值时,它给了我一个不正确的值。我已经检查了好几次这个公式,但它仍然给我一个错误。此外,我还设置了当兴趣小于0或大于20但未显示任何内容时显示警报。我如何才能在必要时正确显示正确的未来值和警报 Javascript var $ = function (id) { return document.getElementById(id); } var calculate_click = function (

我目前正在学习javascript。我创建了一个计算器来寻找投资的未来价值。当它显示
未来值时,它给了我一个不正确的值。我已经检查了好几次这个公式,但它仍然给我一个错误。此外,我还设置了当兴趣小于
0
或大于
20
但未显示任何内容时显示警报。我如何才能在必要时正确显示正确的未来值和警报

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;
}
var$=函数(id){
返回文档.getElementById(id);
}
var计算\单击=函数(){
var投资=浮动($(“投资”).价值);
var annualRate=parseFloat($(“汇率”).value)/100;
var年=parseInt($(“年”).值);
$(“未来价值”)。价值=”;

如果使用
.value
的(isNaN(investment)| | investment不正确,则其javascript(这是jquery)尝试在前面添加一个
#
,并改用
.val()

与此类似:

编辑


他没有使用jquery,请忽略此项。

如果我正确地记住了未来值,您就弄乱了公式,这就是您无法获得预期值的原因

更改:

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

不太清楚为什么每年都循环,但它应该基于年数的幂(如果我没记错的话,同样是)

但这不是JQuery,请检查第一个函数赋值:
var$=function(id){return document.getElementById(id);}
您这样做有什么原因吗?该函数无论如何都不起作用请参见-为什么不使用jquery,在“investment”前面添加一个哈希,然后使用.val()?我不介意这是否是一个赋值,所以你被告知不要这样做吗?@Niall这是因为在纯JS中无法以这种方式获得div值-而且我还相信JSFIDLE可以防止在JS中赋值
$
函数。顺便说一句,code_Ed_Student-JQuery是Javascript,所以说它是Javascript可以包含在JQuery中,w这里说它不是JQuery并不排除它是JS;)@Jon,但“投资”至少不是div,而是一种输入(参见$(“投资”).focus();)也许这不是我最初教的部分-这很好。好吧,所以它不会阻止
$
函数的赋值-很高兴知道,但是
.value
似乎工作得很好。^你能给出示例输入和预期输出以及你得到的输出吗?顺便说一句,我想你没有检查
annualRate
的正确值,因为您要做的第一件事是除以
100
,所以您应该检查
.2
futureValue = investment*Math.pow((1+annualRate), years);