Создание приложения для голосования

JavaScriptJavaScriptIntermediate
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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

👀 Предпросмотр

Voting app demo gif

🎯 Задачи

В этом проекте вы научитесь:

  • Как инициализировать HTML-структуру для приложения голосования
  • Как реализовать функциональность добавления новых вариантов голосования
  • Как реализовать функциональность удаления вариантов голосования
  • Как протестировать приложение, чтобы убедиться, что функциональность работает как ожидается

🏆 Достижения

После завершения этого проекта вы сможете:

  • Создать базовую HTML-структуру для приложения голосования
  • Использовать JavaScript для динамического добавления и удаления вариантов голосования из приложения
  • Обрабатывать взаимодействия пользователя, такие как нажатие кнопки "Добавить вариант" и иконки удаления
  • Протестировать приложение, чтобы убедиться, что оно соответствует требованиям
  • Создавать интерактивные веб-приложения с использованием HTML, CSS и JavaScript

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript(("JavaScript")) -.-> javascript/DOMManipulationGroup(["DOM Manipulation"]) javascript/BasicConceptsGroup -.-> javascript/functions("Functions") javascript/DOMManipulationGroup -.-> javascript/dom_select("DOM Selection") javascript/DOMManipulationGroup -.-> javascript/dom_manip("DOM Manipulation") javascript/DOMManipulationGroup -.-> javascript/event_handle("Event Handling") javascript/DOMManipulationGroup -.-> javascript/dom_traverse("DOM Traversal") subgraph Lab Skills javascript/functions -.-> lab-445674{{"Создание приложения для голосования"}} javascript/dom_select -.-> lab-445674{{"Создание приложения для голосования"}} javascript/dom_manip -.-> lab-445674{{"Создание приложения для голосования"}} javascript/event_handle -.-> lab-445674{{"Создание приложения для голосования"}} javascript/dom_traverse -.-> lab-445674{{"Создание приложения для голосования"}} end

Настройка структуры проекта

В этом шаге вы настройте файлы и структуру проекта. Следуйте шагам ниже, чтобы выполнить этот шаг:

Откройте папку проекта. Структура каталогов следующая:

├── css
|   ├── style.css
|   └── bootstrap.min.css
├── images
|   ├── x.svg
|   └── plus-square.svg
├── js
│   └── jquery.min.js
└── index.html

Нажмите кнопку Go Live в нижнем правом углу WebIDE, чтобы запустить проект.

Далее откройте "Web 8080" в верхней части ВМ и обновите его вручную, чтобы увидеть страницу.

unfinished project structure

Реализация функциональности добавления варианта

В этом шаге вы реализуете функциональность добавления новых вариантов голосования в приложение.

  1. В файле index.html найдите раздел <script> внизу файла.
  2. Внутри раздела <script> сначала добавьте itemNumber и renderList, и добавленный код будет выглядеть так:
let itemNumber = 2; // По умолчанию 2 данных
let initRender = (txt) => {
  return `<div class="mb-3 row">
          <label class="col-sm-2 col-form-label txt">${txt}</label>
          <div class="col-sm-9">
              <input type="text" class="form-control">
         </div>
      </div>`;
};
// Отображать HTML с x (кнопкой удаления) для большего количества данных
let renderList = (txt) => {
  return `<div class="mb-3 row item">
          <label class="col-sm-2 col-form-label txt">${txt}</label>
          <div class="col-sm-9">
              <input type="text" class="form-control">
          </div>
          <div class="col-sm-1">
              <img class="del-icon" src="./images/x.svg" alt="">
          </div>
      </div> `;
};

Эти функции используются для генерации HTML-структуры для вариантов голосования.

  1. Найдите следующий блок кода в разделе <script>:
$(
  (function () {
    // При инициализации следующие два элемента появляются без символа удаления
    for (let index = 0; index < 2; index++) {
      let initList = initRender(`Option${index + 1}`);
      $(".list").append(initList);
    }

    // Нажмите на знак плюс
    $(".add").click(function () {
      // TODO: Завершите код здесь
    });
  })()
);
  1. Внутри блока $(".add").click(function () {... }) добавьте следующий код:
$(".list").html("");
itemNumber++;
for (let index = 0; index < itemNumber; index++) {
  let list = renderList(`Option${index + 1}`);
  $(".list").append(list);
}

Этот код очистит существующие варианты, увеличит переменную itemNumber, а затем отобразит новые варианты с использованием функции renderList.

При наличии этого кода при нажатии пользователем кнопки "Добавить вариант" в список будет добавлен новый вариант голосования.

Реализация функциональности удаления

В этом шаге вы реализуете функциональность удаления вариантов голосования из приложения.

  1. В разделе <script> файла index.html найдите следующий блок кода:
// Нажмите на кнопку удаления x, иконка удаления не будет отображаться, если в списке меньше 2 элементов
$(document).on("click", ".del-icon", function () {
  // TODO: Завершите код здесь
});
  1. Внутри этого блока кода добавьте следующий код:
$(".list").html("");
itemNumber--;
if (itemNumber <= 2) {
  for (let index = 0; index < itemNumber; index++) {
    let list = initRender(`Option${index + 1}`);
    $(".list").append(list);
  }
} else {
  for (let index = 0; index < itemNumber; index++) {
    let list = renderList(`Option${index + 1}`);
    $(".list").append(list);
  }
}

Этот код очистит существующие варианты, уменьшит переменную itemNumber, а затем отобразит оставшиеся варианты с использованием соответствующей функции (initRender или renderList), в зависимости от количества вариантов.

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

Тестирование приложения

  1. Сохраните файл index.html и обновите страницу index.html в вашем браузере.
  2. Проверьте, что первые два варианта голосования отображаются без иконки удаления.
  3. Нажмите кнопку "Добавить вариант" и убедитесь, что новый вариант голосования добавляется в список и отображается иконка удаления.
  4. Нажмите на иконку удаления рядом с одним из вариантов голосования и убедитесь, что вариант удален из списка.
  5. Продолжайте тестировать приложение, добавляя и удаляя варианты голосования, чтобы убедиться, что функциональность работает как ожидается.

Готовый результат выглядит так:

Voting app final result

Поздравляем! Вы завершили реализацию приложения для голосования.

✨ Проверить решение и практиковаться

Резюме

Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.