Javascript中的汽车贷款计算器什么也没显示

时间:2014-04-03 15:17:44

标签: javascript calculator

我希望有人可以帮忙解决这个问题:

我目前正在汽车经销商网站上工作。在这个网站上是一个汽车贷款计算器,计算您的每月还款。我已经成功创建了一个计算正确数量的基本计算器。

客户对此并不满意。他们想要一个更高级的计算器,通过气球考虑以及存款,启动和管理费来计算每月还款。

我改变了代码以反映这一点,但现在这件事已经不再适用了。我在代码中找不到任何错误。

以下是应该进行计算的Javascript:

function calculate() {
        // Get the user's input from the form. Assume it is all valid.
        // Convert interest from a percentage to a decimal, and convert from
        // an annual rate to a monthly rate. Convert payment period in years
        // to the number of monthly payments.
        var principal = document.loandata.principal.value;
        var lessDeposit = document.loandata.deposit.value;
        var adminFee = document.loandata.admin.value;
        var initiationFee = document.loandata.initiation.value;
        var interest = document.loandata.interest.value / 100 / 12;
        var payments = document.loandata.years.value * 12;
        var balloonPercent = document.loandata.balloon.value / 100;

        // Now compute the monthly payment figure, using esoteric math.
        var balloonFinal = (principal * balloonPercent);
        var totalPrincipal = (principal + initiationFee + balloonfinal - lessDeposit);
        var x = Math.pow(1 + interest, payments);
        var monthly = (totalPrincipal*x*interest)/(x-1);

        // Check that the result is a finite number. If so, display the results
        if (!isNaN(monthly) && 
            (monthly != Number.POSITIVE_INFINITY) &&
            (monthly != Number.NEGATIVE_INFINITY)) {

            document.loandata.payment.value = round(monthly + adminFee);
            document.loandata.total.value = round(monthly * payments);
            document.loandata.totalinterest.value = 
                round((monthly * payments) - principal);
        }
        // Otherwise, the user's input was probably invalid, so don't
        // display anything.
        else {
            document.loandata.payment.value = "";
            document.loandata.total.value = "";
            document.loandata.totalinterest.value = "";
        }
}

// This simple method rounds a number to two decimal places.
function round(x) {
    return Math.round(x*100)/100;
}

此外,如果可能,还需要进行一些验证。与购买价格一样,利率和付款期限是必填字段。但其余的不是。因此,如果有人填写必填字段而不是其他字段,则计算器仍然需要工作,但如果某人没有完成其中一个必填字段,则需要提示他们这样做。

对于那些不知道气球支付是什么的人,这里有一个例子; 购买价格为R117 000 你决定30%的气球付款。在初始购买价格上,30%相当于R35 100.此金额将从您的初始购买价格中扣除,这意味着您的购买价格现在为R81 900.之后是存款,减去,额外费用和管理员和启动费。因此,每月还款是使用R81 900 +额外费用的新购买价格 - 存款(如果有)计算的。为了利息起见,在合同结束后,您必须全额支付气球金额或重新为车辆融资。

PS:关于JavaScript,我是一个完整的新手。所以任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

如果结果为空,则这三个条件中的一个可能会触发else语句:

if (!isNaN(monthly) && 
    (monthly != Number.POSITIVE_INFINITY) &&
    (monthly != Number.NEGATIVE_INFINITY)) {

答案 1 :(得分:0)

您在JS中输入了拼写错误,您需要使用balloonfinal代码行中的大写字母F将balloonFinal更改为var totalPrincipal =

principallessDepositadminFeeinitiationFee也可能需要作为整数/浮点数进行类型转换。