Чтобы лучше понять DOM, давайте вместе создадим проект калькулятора ссуды!
Для начала откройте свой VS Code и назовите папку: Loan Calculator. Итак, мы будем использовать BootStrap для создания нашего пользовательского интерфейса за считанные минуты. Поскольку нас больше интересует JS.
Поэтому создайте файл index.html в папке Loan Calculator и добавьте требуемый Bootsrap CDN после добавления шаблона HTML.
‹! - Обязательные мета-теги →
‹Meta charset =” utf-8 ›
‹Meta name =” viewport ”content =” width = device-width, initial-scale = 1, shrink-to-fit = no ”›
‹! - Bootstrap CSS →
‹Ссылка rel =” таблица стилей ”href =” https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css целостность = ”sha384-ggOyR0iXCbMQv3Xipma34MD + dH / 1fQ784 / j6cYCYORVOINXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX «Анонимный» ›
Так как же выглядит наш калькулятор ссуды? Тадаааа …… ..
Теперь сначала нам нужно понять структуру DOM, стоящую за ним.
Вы можете переставлять и перестраивать структуру DOM по своему выбору и интересам. Как только вы закончите с правильной маркировкой классов и идентификаторов, код JS будет работать лучше.
Это структура HTML:
‹! Doctype html›
‹Html lang =” en ”›
‹! - Обязательные мета-теги →
‹Meta charset =” utf-8 ›
‹Meta name =” viewport ”content =” width = device-width, initial-scale = 1, shrink-to-fit = no ”›
‹! - Bootstrap CSS →
‹Ссылка rel =” таблица стилей ”href =” https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css целостность = ”sha384-ggOyR0iXCbMQv3Xipma34MD + dH / 1fQ784 / j6cYCYORVOINXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX «Анонимный» ›
‹Title› Кредитный калькулятор ‹/title›
# загрузка, # результаты
{
дисплей: нет;
}
#Информация
{
выравнивание текста: центр;
padding-top: 10 пикселей;
}
‹Body class =« bg-dark »›
‹Div class =” container ”›
‹Div class =” row ”›
‹Div class =” col-md-6 mx-auto ”›
‹Div class =” card-body text-center mt-5 ›
‹H1 class =” заголовок display-5 pb-3 ›Кредитный калькулятор ‹/h1›
‹Form id =” ссудная форма ”›
‹Div class =” form-group ”›
‹Div class =” input-group ”›
‹Span class =” input-group-addon ”› $ ‹/span›
‹Input type =” number ”class =” form-control ”id =” amount ”placeholder =« Loan Amount »›
‹/Div›
‹/Div›
‹Div class =” form-group ”›
‹Div class =” input-group ”›
‹Span class =" input-group-addon "›% ‹/span›
‹Тип ввода =" число "класс =" форма-контроль "id =" интерес "заполнитель =" Интерес "›
‹/Div›
‹/Div›
‹Div class =” form-group ”›
‹Div class =” input-group ”›
‹Input type =» number »class =» form-control »id =« years »placeholder =« Years to Repay »›
‹/Div›
‹/Div›
‹Div class =” form-group ”›
‹Input type =" submit "value =" Calculate "class =" btn btn-dark btn-block "›
‹/Div›
‹! - Загрузчик здесь →
‹Div id =” loading ”›
‹Img src =” img / loading.gif ”alt =” ”›
‹/Div›
‹! - Результаты →
‹Div id =» results »class =» pt-4 ›
‹H5› Результаты ‹/h5›
‹Div class =” form-group ”›
‹Div class =” input-group ”›
‹Span class =” input-group-addon ”› Ежемесячный платеж ‹/span›
‹Input type =” number ”class =” form-control ”id =” month-payment ”placeholder =” Ежемесячный платеж ”отключен›
‹/Div›
‹/Div›
‹Div class =” form-group ”›
‹Div class =” input-group ”›
‹Span class =” input-group-addon ”› Общий платеж ‹/span›
‹Input type =” number ”class =” form-control ”id =” total-payment ”placeholder =” Total Payment ”отключен›
‹/Div›
‹/Div›
‹Div class =” form-group ”›
‹Div class =” input-group ”›
‹Span class =” input-group-addon ”› Общий процентный платеж ‹/span›
‹Input type =” number ”class =” form-control ”id =” total-Interest ”placeholder =” Total Interest ”отключен›
‹/Div›
‹/Div›
‹/Div›
‹/Div›
‹Div id =” info ”›
‹A href="https://www.google.com/ target="_blank"› ‹h4 class =” btn btn-dangerous ”› Ознакомьтесь с Кодексом! ‹/H4› ‹/a›
‹/Div›
‹/Div›
‹/Div›
‹/Div›
‹! - Дополнительный JavaScript →
‹! - сначала jQuery, затем Popper.js, затем Bootstrap JS →
‹Скрипт src =” https://code.jquery.com/jquery-3.3.1.slim.min.js целостность = ”sha384-q8i / X + 965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH + 8abtTE1Pi6jizo =” перекрестный скрипт ”
‹Скрипт src =” https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js целостность = ”sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMzr86dIq3s
‹Скрипт src =” https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js целостность = ”sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf / nJGz4xIxFDs +
‹Скрипт src =” app.js ”› ‹/script›
‹/Html›
Нам также нужна папка img для хранения изображения loading.gif для лучшего взаимодействия с пользователем.
Хватит UI, давайте сразу перейдем к JS-части, которая более интересна.
Первый шаг - захват всех элементов пользовательского интерфейса, которые нам нужны для добавления функций или прослушивателей событий. Увидев пользовательский интерфейс, вы можете увидеть, что кнопка отправки - единственное, что заставляет этот пользовательский интерфейс работать как единое целое.
Итак, взяв идентификатор формы, мы можем получить все детали, которые USER введет в него.
Теперь все, что нам нужно, это добавить к нему соответствующий прослушиватель событий.
На данный момент все на веб-странице видно, даже раздел результатов и загружаемый gif, который нам нужно отобразить после нажатия кнопки отправки.
Для этого мы добавим прослушиватель событий для отправки const:
Итак, что происходит здесь, после нажатия кнопки отправки: 1. Скройте раздел результатов и отобразите загружаемый файл gif по блокам, чтобы почувствовать пользовательский интерфейс с таймером для выполнения calculateResults () с интервалом 2 мс.
Теперь пришло время вызвать calculateResults (): -
Объяснение :
Первое изображение: - Нам нужно получить все элементы пользовательского интерфейса, отвечающие за ввод и вывод результатов, с помощью getElementById ().
Нам нужно применить формулу: и рассчитать основную сумму, начисленные проценты, рассчитанные платежи и соответственно вычислить ежемесячные платежи.
За ним следует условие if-else: проверить, является ли ежемесячный расчет конечным или нет. Если конечный, рассчитайте результаты соответствующим образом и отобразите результат в блоке, скрывая при этом loading.gif как display: none. Если не конечный, выполняется showError («Пожалуйста, проверьте свой номер»).
В showerror () скройте как результаты, так и раздел loading.gif как none. Затем создайте errorGif const с div в нем в DOM, добавьте к нему имя класса и добавьте в него текст ошибки. Добавьте div error, в частности, перед заголовком карты «Ссудный калькулятор». Вы также можете устранить ошибку через 3 мс, используя setTimeOut (), который соответственно вызовет clearError ().
ClearError () найдет добавленное имя класса’alert ’для errorGif и немедленно удалит его.
Вот так прекрасно работает LoanCalculator.