私は理解できなかった2つの問題を抱えています。私は複利を計算するためにJavaScriptを使用しています。利息を計算するための私の式は機能しますが、計算後に表示される表形式の利率スケジュール(毎回発生する金額を期間ごとに表示するため)と、最終的な合計および合計利息額が必要です。これは私のコードがどのように見えるかです:
<head>
<title></title>
<script type="text/javascript">
function rateSched(amnt, prd, rte, namt) {
for (i = 0; i < periods; i++) {
if (!document.getElementsByTagName) return;
tabBody = document.getElementsByTagName("tbody").item(0);
row = document.createElement("tr");
cell1 = document.createElement("td");
cell2 = document.createElement("td");
cell3 = document.createElement("td");
cell4 = document.createElement("td");
textnode1 = document.createTextNode(amnt);
textnode2 = document.createTextNode(prd);
textnode3 = document.createTextNode(rte);
textnode4 = document.createTextNode(namt);
cell1.appendChild(textnode1);
cell2.appendChild(textnode2);
cell3.appendChild(textnode3);
cell4.appendChild(textnode4);
row.appendChild(cell1);
row.appendChild(cell2);
row.appendChild(cell3);
row.appendChild(cell4);
tabBody.appendChild(row);
}
}
var deposit;
var periods;
var interest;
var newamount = deposit * (Math.pow(1 + interest, periods) - 1) / interest;
var i=0;
function calcAmt(form1) {
deposit = form1.dp.value;
interest = form1.rt.value;
periods = form1.pr.value;
form1.amt.value = Math.round(deposit * (Math.pow((1 + interest / 100), periods)) * 100) / 100;
form1.intr.value = Math.round((deposit * (Math.pow((1 + interest / 100), periods)) - deposit) * 100) / 100
}
</script>
</head>
<body>
<center>
<form method="get" name="form1" onreset="form1.dp.focus()">
<table border="5" bgcolor="#BDBDBD" cellpadding="2" width="300px">
<tr><td colspan="2" align="center">
<b><font size="5" color="#4B088A">Compound Interest</font></b>
</td></tr>
<tr><td align="right">Initial Deposit</td><td>
<input type="text" name="dp" value=""/></td></tr>
<tr><td align="right">Interest Rate (% Value)</td><td>
<input type="text" name="rt" value=""/></td></tr>
<tr><td align="right">Periods</td><td>
<input type="text" name="pr" value=""/></td></tr>
<tr><td align="right">Final Amount</td><td>
<input type="text" name="amt" value=""/></td></tr>
<tr><td align="right">Total Interest</td><td>
<input type="text" name="intr" value=""/></td></tr>
<tr><td>
<input type="button" name="calc" value="Calculate" size="13" onclick="calcAmt(form1);rateSched(deposit,interest,i,newamount);return false;"/></td>
<td></td></tr>
</table>
</form>
<br />
<table border='1' width="300px">
<tbody>
<tr><td>Amount</td><td>Period</td><td>Rate</td><td>New Amount</td></tr>
</tbody>
</table>
<br />
<table>
<tr><td align="right">Final Amount</td><td>
<input type="text" name="amt" value="" size="13"/></td></tr>
<tr><td align="right">Total Interest</td><td>
<input type="text" name="intr" value="" size="13"/></td></tr>
</table>
</center>
</body>
</html>
私の問題は、新しいテーブルの行を上のテーブルではなく下の4列のテーブルに追加し、同じ列の代わりに各期間を表示する必要があることです。下の「最終金額」と「合計利息」はonclickで入力しないでください。
編集:コメントで説明されているように問題を抱えているコードの最新バージョン:
function calcAmt(form1) {
var newamount = deposit * (Math.pow(1 + interest, periods) - 1) / interest;
deposit = form1.dp.value;
interest = form1.rt.value;
periods = form1.pr.value;
form1.amt.value = Math.round(deposit * (Math.pow((1 + interest / 100), periods)) * 100) / 100;
form1.intr.value = Math.round((deposit * (Math.pow((1 + interest / 100), periods)) - deposit) * 100) / 100
}