Выбрать главу

  <tr>

    <td>Monthly payment:</td>

    <td>$<span class="output" id="payment"></span></td>

  </tr>

  <tr>

    <td>Total payment:c/td>

    <td>$<span class="output" id="total"></span></td>

  </tr>

  <tr>

    <td>Total interest:c/td>

    <td>$<span class="output" id="totalinterest"></span></td>

  </tr>

  <tr>

    <th>Sponsors:c/th>

    <td colspan=2>

      Apply for your loan with one of these fine lenders:

      <div id="lenders"></div>

    </td>

  </tr>

</table>

<!-- Остальная часть примера - JavaScript-код в теге <script> ниже. Обычно сценарии -->

<!-- помещаются в начало документа, в заголовок <head>, но в данном случае вам проще -->

<!-- будет понять пример, если JavaScript-код будет находиться ниже HTML-содержимого. -->

<script>

"use strict"; // Использовать строгий режим ECMAScript 5, если броузер поддерживает его

/*

* Этот сценарий определяет функцию calculate(), вызываемую обработчиками событий

* в разметке HTML выше. Функция читает значения из элементов <input>, вычисляет размеры

* платежей по ссуде, отображает результаты в элементах <span>. Кроме того, она сохраняет

* пользовательские данные, отображает ссылки на кредитные учреждения и рисует диаграмму.

*/

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 {

    // Результат не является числом или имеет бесконечное значение,