到底为什么这个Javascript程序无法运行?

问题描述 投票:0回答:3

只是想用 JavaScript 制作一个简单的客户端抵押计算器。 当我尝试运行它时,什么也没有发生。 我认为它非常简单,但我就是无法弄清楚。有任何想法吗? 我感谢你的帮助。

<html>
<head>
<title> Mortgage Calculator </title>

<script type = "text/javascript">
<!--
document.getElementById("mortgageCalc").calculateMortgage.onclick = CalcMortgage ();

function CalcMortgage ()
{
 var elt = document.getElementById("mortgageCalc");
 var P = elt.principal.value;
 var time = elt.interest.value;
 var n = elt.term.value;
 var isdigit = /^[-]?[0-9]+[\.]?[0-9]+$;
 
 if (isdigit.test(P) && isdigit.test(time) && isdigit.test(n))
 {
    var r = (time/100)/12;
    n = Math.round(n);
    
    var R = P*r/(1-(1/(Math.pow((1+r),n))));
    R = R.toFixed(2);
    
    var totalPayment = R*Number(n);
    totalPayment = totalPayment.toFixed(2);
    
    var totalInterest = totalPayment - P;
    totalInterest = totalInterest.toFixed(2);

    elt.monthlyPayment.value = R;
    elt.totalPayment.value = totalPayment;
    elt.totalInterest.value = totalInterest;
 }
 else
{
alert("Do not use non-numeric or negative numbers.");
}
}

// -->
</script>

</body>
</html>

</head>

<body>
<h3> Mortgage Calculator </h3>

<form id = "mortgageCalc" action = "" method = "post" >
<table border = "0">

<tr>
<td> Principal Amount: </td>
<td>
<input type = "text" name = "principal" size = "15" />
</td>
</tr>

<tr>
<td> Annual Interest Rate (%): </td>
<td>
<input type = "text" name = "interest" size = "15" />
</td>
</tr>

<tr>
<td> Loan Term (months): </td>
<td>
<input type = "text" name = "term" size = "15" />
</td>
</tr>

<tr>
<td>
<input type = "button" name = "calculateMortgage" value = "Calculate" />
</td>

<td>
<input type = "reset" value = "Clear" />
</td>
</tr>

<tr>
<td> Monthly Payments: </td>
<td>
<input type = "text" name = "monthlyPayment" value = "" size = "15" />
</td>
</tr>

<tr>
<td> Sum Total Payments: </td>
<td>
<input type = "text" name = "totalPayment" value = "" size = "15" />
</td>
</tr>

<tr>
<td> Total Interest Paid: </td>
<td>
<input type = "text" name = "totalInterest" value = "" size = "15" />
</td>
</tr>

</table>

</form>
javascript html
3个回答
3
投票

您的正则表达式格式错误;缺少一个

/
。并且您在所有内容的中间(而不是末尾)都有结束 html 标签。然后,您调用 CalcMortage 并将结果附加为单击处理程序,而不是方法本身(因为
()
中的结束
onclick = CalcMortgage();
)。并且你在正则表达式中强制使用多个数字(就像我不能用“5”表示百分比)。

除此之外都还好。


1
投票

您将返回值(即

undefined
)分配给此处的
onclick
处理程序:

document.getElementById("mortgageCalc").calculateMortgage.onclick = CalcMortgage ();

尝试删除“调用此函数”括号:

document.getElementById("mortgageCalc").calculateMortgage.onclick = CalcMortgage;

0
投票

看起来你在定义它之前就已经对

CalcMortgage
进行了函数调用:

document.getElementById("mortgageCalc").calculateMortgage.onclick = CalcMortgage ();

考虑将其放在 CalcMortgage 定义之后

document.getElementById("mortgageCalc").calculateMortgage.onclick = CalcMortgage;
© www.soinside.com 2019 - 2024. All rights reserved.