javascript
"use strict"
function calculate() {
var years = document.getElementById("years");
var amount = document.getElementById("amount");
var apr = document.getElementById("apr");
if (years.value != "" && amount.value != "" && apr.value != "") {
var payments = parseFloat(years.value) * 12;
console.log(years.value);
var principal = parseFloat(amount.value);
console.log(amount.value);
var interest = parseFloat(apr.value) / 100 / 12;
console.log(apr.value);
var x = Math.pow(1 + interest, payments);
var monthly = (principal * interest * x) / (x - 1);
if (isFinite(monthly) && monthly > 0) {
document.getElementById("payment").value = monthly.toFixed(2);
document.getElementById("total").value = (payments * monthly).toFixed(2);
document.getElementById("totalInterest").value = (monthly * payments - principal).toFixed(2);
save(amount.value, apr.value, years.value);
chart(payments, principal, interest, monthly);
} else {
alert("输入不合法");
reset();
}
}
}
function chart(payments, principal, interest, monthly) {
var tableNode = document.createElement("table");
tableNode.setAttribute("id", "tables");
var row = payments,
cols = 5;
var data = ['期次', '偿还利息', '偿还本金', '当期月供', '剩余本金']
var time = 1,
interests = 0,
backRoot = 0,
monthly = monthly.toFixed(2),
surplus = principal;
var trNode = tableNode.insertRow();
for (var i = 0; i < cols; i++) {
var tdNode = trNode.insertCell();
tdNode.innerHTML = data[i];
}
while (row) {
var trNode = tableNode.insertRow();
var tdNode = trNode.insertCell();
tdNode.innerHTML = time;
var tdNode = trNode.insertCell();
interests = (surplus * interest).toFixed(2);
tdNode.innerHTML = interests;
var tdNode = trNode.insertCell();
backRoot = (monthly - interests).toFixed(2);
tdNode.innerHTML = backRoot;
var tdNode = trNode.insertCell();
tdNode.innerHTML = monthly;
var tdNode = trNode.insertCell();
surplus = (surplus - backRoot).toFixed(2);
tdNode.innerHTML = surplus;
time++;
row--;
}
document.getElementById("add").appendChild(tableNode);
}
function reset() {
document.getElementById("years").value = "";
document.getElementById("amount").value = "";
document.getElementById("apr").value = "";
document.getElementById("payment").value = "";
document.getElementById("totalInterest").value = "";
document.getElementById("total").value = "";
var thisNode = document.getElementById("tables");
thisNode.remove(thisNode);
}
function save(amount, apr, years) {
if (window.localStorage) {
localStorage.loan_amount = amount;
localStorage.loan_apr = apr;
localStorage.loan_years = years;
}
}
window.onload = function() {
if (window.localStorage && localStorage.loan_amount) {
document.getElementById("amount").value = localStorage.loan_amount;
document.getElementById("apr").value = localStorage.loan_apr;
document.getElementById("years").value = localStorage.loan_years;
}
};
css
* {
margin: 0;
padding: 0;
}
.out {
font-weight: bold;
}
.forms {
position: relative;
width: 400px;
margin: 30px auto;
padding: 15px;
border-radius: 10px;
border: 1px solid black;
}
.font {
font-size: 14px;
}
th,
td {
padding: 5px 5px;
}
th {
text-align: left;
}
select {
margin: 0 4px;
}
input {
margin: 0 8px;
padding: 1px 8px;
outline: none;
text-align: right;
}
button {
padding: 2px 5px;
margin-right: 10px;
}
.hr {
margin: 10px 0;
}
.clear-data table {
margin: 0 auto;
border-collapse: collapse;
border: none;
transform: none;
}
.clear-data td {
padding: 3px 10px;
border: 1.6px solid grey;
text-align: center;
}
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="calculate.js"></script>
<link rel="stylesheet" href="index.css">
</head>
<body>
<section class="forms font">
<table>
<th>贷款按揭计算器v1.0</th>
<tr>
<td>贷款方式
<select name="" id="">
<option value="" select="selected">等额本息</option>
</select>
</td>
</tr>
<tr>
<td>贷款年限<input type="number" value="" id="years" onchange="calculate();" placeholder="0">年</td>
</tr>
<tr>
<td>贷款金额<input type="number" value="" id="amount" onchange="calculate();" placeholder="0">元</td>
</tr>
<tr>
<td>贷款年利率<input type="number" value="" id="apr" onchange="calculate();" placeholder="0">%</td>
</tr>
<tr>
<td><button class="cal" onclick="calculate();">计算</button>
<button onclick="reset();">重置</button></td>
</tr>
</table>
<hr class="hr" />
<table>
<tr>
<td>月均还款<input type="text" id="payment" class="out" placeholder="0" readonly="true">元</td>
</tr>
<tr>
<td>支付利息<input type="text" id="totalInterest" class="out" placeholder="0" readonly="true">元</td>
</tr>
<tr>
<td>还款总额<input type="text" id="total" class="out" placeholder="0" readonly="true">元</td>
</tr>
</table>
<hr class="hr" />
<section id="add" class="clear-data fonts"></section>
</section>
</body>
</html>
