Дэвид Флэнаган - JavaScript. Подробное руководство, 6-е издание
- Название:JavaScript. Подробное руководство, 6-е издание
- Автор:
- Жанр:
- Издательство:Символ-Плюс
- Год:2012
- Город:СПб
- ISBN:978-5-93286-215-5
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Дэвид Флэнаган - JavaScript. Подробное руководство, 6-е издание краткое содержание
Эта книга - одновременно и руководство программиста, и полноценный справочник по базовому языку JavaScript и клиентским прикладным интерфейсам, предоставляемым веб-броузерами.
JavaScript. Подробное руководство, 6-е издание - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
который следует за определением таблицы. Обратите внимание, что для некоторых
элементов ввода определены обработчики событий "onchange" и "onclick".
В них заданы строки JavaScript-кода, выполняемого при вводе данных или щелчке на кнопке.
-->
Enter Loan Data: | Loan Balance, Cumulative Equity, and Interest Payments | |
---|---|---|
Amount of the loan ($): | ||
Annual interest (%): | ||
Repayment period (years): | ||
Zipcode (to find lenders): | ||
Approximate Payments: | Calculate | |
Monthly payment: | $ | |
Total payment:c/td> | $ | |
Total interest:c/td> | $ | |
Sponsors:c/th> |
|
"use strict"; // Использовать строгий режим ECMAScript 5, если броузер поддерживает его
/*
* Этот сценарий определяет функцию calculate(), вызываемую обработчиками событий
* в разметке HTML выше. Функция читает значения из элементов , вычисляет размеры
* платежей по ссуде, отображает результаты в элементах . Кроме того, она сохраняет
* пользовательские данные, отображает ссылки на кредитные учреждения и рисует диаграмму.
*/
function calculate() {
// Отыскать элементы ввода и вывода в документе
var amount = document.getElementById("amount");
var apr = document.getElementByld("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;
// Теперь вычислить сумму ежемесячного платежа.
var х = Math.pow(1 + interest, payments); // Math.pow() вычисляет степень
var monthly = (principal * x * interest)/(x-1);
// Если результатом является конечное число, следовательно, пользователь
// указал корректные данные и результаты можно отобразить
if (isFinite(monthly)) {
// Заполнить поля вывода, округлив результаты до 2 десятичных знаков
payment.innerHTML = monthly.toFixed(2);
total.innerHTML = (monthly * payments).toFixed(2);
totalinterest.innerHTML = ((monthly*payments)-principal).toFixed(2);
// Сохранить ввод пользователя, чтобы можно было восстановить данные
// при следующем открытии страницы
save(amount.value, apr.value, years.value, zipcode.value);
// Реклама: отыскать и отобразить ссылки на сайты местных
// кредитных учреждений, но игнорировать сетевые ошибки
try { // Перехватывать все ошибки, возникающие в этих фигурных скобках
getLenders(amount.value, apr.value, years.value, zipcode.value);
}
catch(e) { /* И игнорировать эти ошибки */ }
// В заключение вывести график изменения остатка по кредиту, а также
// графики сумм, выплачиваемых в погашение кредита и по процентам
chart(principal, interest, monthly, payments);
}
else {
// Результат не является числом или имеет бесконечное значение,
// что означает, что были получены неполные или некорректные данные.
// Очистить все результаты, выведенные ранее,
payment.innerHTML = "";
// Стереть содержимое этих элементов total.innerHTML = totalinterest.innerHTML = "";
chart(); // При вызове без аргументов очищает диаграмму
}
}
// Сохранить ввод пользователя в свойствах объекта localStorage. Значения этих свойств
// будут доступны при повторном посещении страницы. В некоторых броузерах (например.
// в Firefox) возможность сохранения не поддерживается, если страница открывается
// с адресом URL вида file://. Однако она поддерживается при открытии страницы через HTTP.
function save(amount, apr, years, zipcode) {
if (window.localStorage) { // Выполнить сохранение, если поддерживается
localStorage.loan_amount = amount;
localStorage.loan_apr = apr;
localStorage.loan_years = years;
localStorage.loan_zipcode = zipcode;
}
}
// Автоматически восстановить поля ввода при загрузке документа,
window.onload = function() {
// Если броузер поддерживает localStorage и имеются сохраненные данные
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;
}
};
// Передать ввод пользователя серверному сценарию, который может (теоретически) возвращать
// список ссылок на сайты местных кредитных учреждений, готовых предоставить кредит.
// Данный пример не включает фактическую реализацию такого сценария поиска кредитных
// учреждений. Но если такой сценарий уже имеется, данная функция могла бы работать с ним.
function getLenders(amount, apr, years, zipcode) {
// Если броузер не поддерживает объект XMLHttpRequest, не делать ничего
if (!window.XMLHttpRequest) return;
// Отыскать элемент для отображения списка кредитных учреждений
Интервал:
Закладка: