只是想用 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>
您的正则表达式格式错误;缺少一个
/
。并且您在所有内容的中间(而不是末尾)都有结束 html 标签。然后,您调用 CalcMortage 并将结果附加为单击处理程序,而不是方法本身(因为 ()
中的结束 onclick = CalcMortgage();
)。并且你在正则表达式中强制使用多个数字(就像我不能用“5”表示百分比)。
您将返回值(即
undefined
)分配给此处的 onclick
处理程序:
document.getElementById("mortgageCalc").calculateMortgage.onclick = CalcMortgage ();
尝试删除“调用此函数”括号:
document.getElementById("mortgageCalc").calculateMortgage.onclick = CalcMortgage;
看起来你在定义它之前就已经对
CalcMortgage
进行了函数调用:
document.getElementById("mortgageCalc").calculateMortgage.onclick = CalcMortgage ();
考虑将其放在 CalcMortgage 定义之后:
document.getElementById("mortgageCalc").calculateMortgage.onclick = CalcMortgage;