JavaScript. Подробное руководство, 6-е издание
Часть 10 из 535 Информация о книге
<b> </tr></b><b> <tr></b><b> <th>Sponsors:c/th></b><b> <td colspan=2></b><b> Apply for your loan with one of these fine lenders:</b><b> <div id="lenders"></div></b><b> </td></b><b> </tr></b><b></table></b><b><!-- Остальная часть примера - JavaScript-код в теге <script> ниже. Обычно сценарии --> </b><b><!-- помещаются в начало документа, в заголовок <head>, но в данном случае вам проще --> </b><b><!-- будет понять пример, если JavaScript-код будет находиться ниже HTML-содержимого. --> </b><b><script></b><b>"use strict"; // Использовать строгий режим ECMAScript 5, если броузер поддерживает его</b><b>/*</b><b>* Этот сценарий определяет функцию calculate(), вызываемую обработчиками событий</b><b>* в разметке HTML выше. Функция читает значения из элементов <input>, вычисляет размеры</b><b>* платежей по ссуде, отображает результаты в элементах <span>. Кроме того, она сохраняет</b><b>* пользовательские данные, отображает ссылки на кредитные учреждения и рисует диаграмму. </b><b>*/</b><b>function calculate() {</b><b> // Отыскать элементы ввода и вывода в документе</b><b> var amount = document.getElementById("amount");</b><b> var apr = document.getElementByld("apr”);</b><b> var years = document.getElementById("years");</b><b> var zipcode = document.getElementById("zipcode");</b><b> var payment = document.getElementById("payment");</b><b> var total = document.getElementById("total");</b><b> var totalinterest = document.getElementById("totalinterest");</b><b> // Получить ввод пользователя из элементов ввода. Предполагается, что все данные </b><b> // являются корректными. Преобразовать процентную ставку из процентов </b><b> // в десятичное число и преобразовать годовую ставку в месячную ставку.</b><b> // Преобразовать период платежей в годах в количество месячных платежей.</b><b> var principal = parseFloat(amount.value);</b><b> var interest = parseFloat(apr.value) / 100 / 12;</b><b> var payments = parseFloat(years.value) * 12;</b><b> // Теперь вычислить сумму ежемесячного платежа.</b><b> var х = Math.pow(1 + interest, payments); // Math.pow() вычисляет степень </b><b> var monthly = (principal * x * interest)/(x-1);</b><b> // Если результатом является конечное число, следовательно, пользователь </b><b> // указал корректные данные и результаты можно отобразить </b><b> if (isFinite(monthly)) {</b><b> // Заполнить поля вывода, округлив результаты до 2 десятичных знаков</b><b> payment.innerHTML = monthly.toFixed(2);</b><b> total.innerHTML = (monthly * payments).toFixed(2);</b><b> totalinterest.innerHTML = ((monthly*payments)-principal).toFixed(2);</b><b> // Сохранить ввод пользователя, чтобы можно было восстановить данные </b><b> // при следующем открытии страницы</b><b> save(amount.value, apr.value, years.value, zipcode.value);</b><b> // Реклама: отыскать и отобразить ссылки на сайты местных </b><b> // кредитных учреждений, но игнорировать сетевые ошибки </b><b> try { // Перехватывать все ошибки, возникающие в этих фигурных скобках </b><b> getLenders(amount.value, apr.value, years.value, zipcode.value);</b><b> }</b><b> catch(e) { /* И игнорировать эти ошибки */ }</b><b> // В заключение вывести график изменения остатка по кредиту, а также </b><b> // графики сумм, выплачиваемых в погашение кредита и по процентам </b><b> chart(principal, interest, monthly, payments);</b><b> }</b><b> else {</b><b> // Результат не является числом или имеет бесконечное значение,</b><b> // что означает, что были получены неполные или некорректные данные.</b><b> // Очистить все результаты, выведенные ранее, </b>