В нашей предыдущей главе: Управление DOM: простой счетчик кликов мы узнали, как обновить нашу HTML DOM с помощью Javascript. В этой главе мы будем принимать данные от пользователя и отображать их на нашем сайте.

Начиная

Сначала давайте начнем с наших файлов. Создайте папку и внутри этой папки создайте два файла.

  1. index.html
  2. main.js

Щелкните папку правой кнопкой мыши и выберите Открыть с помощью кода. Внутри index.html создайте каркас, нажав ! и tab в VSCode. Мы получим что-то вроде этого:

Нам понадобятся два элемента.

  1. Поле формы:для получения ввода от пользователя.
  2. Текстовый элемент:пустой <p>тег для отображения ввода пользователя.

Давайте создадим эти два элемента внутри нашего тега body. Мы поместим тег h1, чтобы все было профессионально.

<body>
  <h1>Writing Stuffs on the Web</h1>
  
  <form id="write">
    <input type="text" name="write">
    <button type="submit">Write Now</button>
  </form>
  
  <p></p>
  <script src="./main.js"></script>
</body>

Добавьте main.js прямо перед закрывающим тегом body, и мы закончили с нашей разметкой (пока).

Управление с помощью Javascript

В нашем ранее созданном файле main.js давайте начнем с события загрузки окна, чтобы наш JS выполнялся после того, как окно будет готово.

window.addEventListener('load', () => {
})

Внутри фигурных скобок мы напишем наш JS-код.

Получение ввода от пользователя

Сначала нам нужно настроить таргетинг на наш элемент from. Мы уже добавили id к нашему элементу.

const writeFrom = document.querySelector('#write')

Теперь, когда мы успешно нацелились на form, мы будем прослушивать событие submit.

writeFrom.addEventListener('submit', event =>  {
  event.preventDefault()
})

Обычно, когда форма отправляется, веб-страницы пытаются POST эту форму, что, в свою очередь, запускает обновление окна. event.preventDefault() отменяет это и останавливает отправку формы браузером.

Если мы зарегистрируем event в консоли, мы получим объект SubmitEvent.

Внутри SubmitEvent мы можем найти все связанные с ним атрибуты и методы.

Нам понадобится target[0], который является input элементом нашей формы. target[0].value вернет нам значения внутри нашего элемента input.

Обновление содержания нашего абзаца

Теперь, когда мы успешно получили ввод от пользователя, все, что нам нужно сделать, это обновить тег <p> нашей разметки, и все готово. Весь наш код JS теперь выглядит так:

window.addEventListener('load', () => {
  const writeFrom = document.querySelector('#write')
  const paragraph = document.querySelector('#write-here')
  
  writeFrom.addEventListener('submit', event => {
    event.preventDefault()
    const content = event.target[0].value
    paragraph.textContent = content
  })
})

и вуаля! Наша HTML-разметка теперь обновляется при вводе данных пользователем.

и для некоторой стилизации я добавлю немного CSS, и мы готовы представить.

Что можно попробовать на основе этого примера

  • Создайте блокнот
  • Создайте приложение Todo

Удачного кодирования.