javascript权威指南练习1.2.1
javascript definitive guide exercise 1.2.1
本文关键字:练习 javascript 更新时间:2023-09-26
我正在阅读《JavaScript:最终指南》一书,书中的一个例子有点困难。这个想法是创建一个贷款计算器。如果用户在表单中输入数据,则当用户返回网站/应用程序时,数据将被保存并调用。
我遇到的问题是,虽然只保存了一部分数据,但它显示在表格的错误部分。具体来说,金额显示正确,但四月、年份和邮政编码都显示错误。年份显示在四月,邮政编码显示在年份,年份显示"未定义"。我已经检查了ID,它们都匹配,所以我不确定为什么数据显示不正确。有人能给我指正确的方向吗?
这是JS:
function calculate() {
// Look up the input and output elements in the document
var amount = document.getElementById("amount");
var apr = document.getElementById("apr");
var years = document.getElementById("years");
var zipcode = document.getElementById("zipcode");
var payment = document.getElementById("payment");
var total = document.getElementById("total");
var totalinterest = document.getElementById("totalinterest");
var principal = parseFloat(amount.value);
var interest = parseFloat(apr.value) / 100 / 12;
var payments = parseFloat(years.value) * 12;
// Now compute the monthly payment figure.
var x = Math.pow(1 + interest, payments); // Math.pow() computes powers
var monthly = (principal*x*interest)/(x - 1);
if (isFinite(monthly)) {
// Fill in the output fields, rounding to 2 decimal places
payment.innerHTML = monthly.toFixed(2);
total.innerHTML = ( monthly * payments ).toFixed(2);
totalinterest.innerHTML = ( ( monthly * payments ) - principal ).toFixed(2);
// Save the user's input so we can restore it the next time they visit
save( amount.value, apr.value, years.value, zipcode.value );
// Advertise: find and display local lenders, but ignore network errors
try { // Catch any errors that occur within these curly braces...
getLenders( amount.value, apr.value, years.value, zipcode.value );
}
catch(e) { /* ...and ignore those errors */ }
// Finally, chart loan balance, and interest and equity payments
chart( principal, interest, monthly, payments );
}
else {
payment.innerHTML = ""; // Erase the content of these elements
total.innerHTML = "";
totalinterest.innerHTML = "";
chart(); // With no arguments, clears the chart
}
}
function save(amount, apr, years, zipcode) {
if (window.localStorage) { // Only do this is the browser supports it
localStorage.loan_amount = amount;
localStorage.loan_apr = apr;
localStorage.loan_years = years;
localStorage.loan_zipcode = zipcode;
}
}
window.onload = function() {
// If the browser supports localStorage and we have some stored data
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;
document.getElementById("zipcode").value = localStorage.loan_zipcode;
}
};
这是HTML:
<table>
<tr>
<th>Enter Loan Data:</th>
<td></td>
<th>Loan Balance, Cumulative Equity, and Interest Payments</th>
</tr>
<tr>
<td>Amount of loan ($):</td>
<td><input id="amount" onchange="calculate();"</td>
<td rowspan="8">
<canvas id="graph" width="400" height="250"></canvas>
</td>
</tr>
<tr>
<td>Annual Interest (%):</td>
<td><input id="apr" onchange="calculate();"></td>
</tr>
<tr>
<td>Repayment period (years):</td>
<td><input id="years" onchange="calculate();"></td>
</tr>
<tr>
<td>Zipcode (to find lenders):</td>
<td><input id="zipcode" onchange="calculate();"></td>
</tr>
<tr>
<th>Approximate Payments:</th>
<td><button onclick="calculate();">Calculate</button></td>
</tr>
<tr>
<td>Monthly payment:</td>
<td>$<span class="output" id="payment"></span></td>
</tr>
<tr>
<td>Total payment:</td>
<td>$<span class="output" id="total"></span></td>
</tr>
<tr>
<td>Total interest:</td>
<td>$<span class="output" id="totalinterest"></span></td>
</tr>
<tr>
<th>Sponsors:</th>
<td colspan="2">Apply for your loan with one of these fine lenders:
<div id="lenders"></div>
</td>
</tr>
</table>
calculate()函数save()部分的代码状态为:
save( amount.value, years.value, zipcode.value );
它应该是:
save( amount.value, apr.value, years.value, zipcode.value );
相关文章:
- 尝试用javascript创建完形填空练习
- 请解释这个Javascript闭包练习
- "Eloquent Javascript“;递归练习
- 使用数组的同时循环练习javascript
- Eloquent JavaScript,第 2 版,练习 5.3 历史预期寿命
- 雄辩的Javascript:练习:一个列表
- 雄辩的JavaScript练习4.2反转数组
- Javascript 函数练习 - “” 符号
- javascript权威指南练习1.2.1
- 我在JavaScript课程中练习Codecademy的Do/While部分时不断收到此消息“SyntaxError:意
- 运动>Javascript>Hamming练习:获得'undefined不是函数'错误
- 使用Javascript循环或优化进行练习
- "甚至最后一个“;数组javascript练习
- Javascript练习解决方案.为什么一个比另一个好
- Javascript练习-反转二维数组
- 香草Javascript/DOM练习帮助(添加红脚段)
- 雄辩的javascript选项卡练习
- 分割账单- JavaScript练习
- Eloquent Javascript中的练习4.4——startsWith()和.slice
- 是否有一个独立的JavaScript编译器/解释器与控制台,我可以用它来练习浏览器之外的JavaScript