Javascript中的汽车贷款计算器不显示任何内容

Javascript中的汽车贷款计算器不显示任何内容,javascript,calculator,Javascript,Calculator,我希望有人能帮上忙: 我目前正在一家汽车经销商网站上工作。这个网站上有一个汽车贷款计算器,可以计算你每月的还款额。我已经成功地创建了一个计算正确金额的基本计算器 客户对此不满意。他们需要一个更先进的计算器来计算每月的还款额,包括大额的对价、存款、入会费和管理费 我修改了代码以反映这一点,但现在这个东西不再工作了。我在代码中找不到任何错误 下面是进行计算的Javascript: function calculate() { // Get the user's input from

我希望有人能帮上忙:

我目前正在一家汽车经销商网站上工作。这个网站上有一个汽车贷款计算器,可以计算你每月的还款额。我已经成功地创建了一个计算正确金额的基本计算器

客户对此不满意。他们需要一个更先进的计算器来计算每月的还款额,包括大额的对价、存款、入会费和管理费

我修改了代码以反映这一点,但现在这个东西不再工作了。我在代码中找不到任何错误

下面是进行计算的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;
}
此外,如果可能,还需要进行一些验证。与购买价格一样,利率和付款期限也是必填字段。但其余的都不是。因此,如果有人填写了必填字段,但没有填写其余字段,计算器仍然需要工作,但如果有人没有填写其中一个必填字段,则需要提示他们这样做

对于那些不知道什么是气球式付款的人,这里有一个例子; 购买价格为R117000 你决定以30%的比例支付。在初始购买价格上,30%相当于R35 100。然后从您的初始购买价格中减去该金额,这意味着您现在购买的是81 900兰特。之后是押金,减去押金,还有额外费用、管理费和入会费。因此,每月还款使用新购买价格81 900兰特+额外存款(如有)计算。为了利息,在合同结束后,您必须全额支付大额金额或为车辆重新融资


PS:说到JavaScript,我完全是个新手。因此,任何帮助都将不胜感激。

如果结果为空,则以下三个条件之一可能触发else语句:

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

如果JS中有输入错误,您需要将
ballodefinal
更改为
ballodefinal
,在
var totalPrincipal=
代码行中使用大写字母F


principal
lessDeposit
adminFee
initiationFee
可能还需要将其类型转换为整数/浮点。

检查开发人员控制台,是否有任何错误?按F12在Chrome中查看它。嗨,我看不到任何错误。也许这个问题是陈旧的,但是你可以考虑分离DOM中的值的检索,计算,并用计算的结果更新DOM。你有没有想过?