Гид по технологиям

Как сделать простой поисковый бар на JavaScript

6 min read Веб-разработка Обновлено 09 Jan 2026
Поисковая строка на JavaScript — простой пример
Поисковая строка на JavaScript — простой пример

Поле поиска на веб-странице (пример Pinterest)

Поисковая строка — привычный элемент интерфейса, который полезен на любых сайтах с данными. В этой инструкции показан минимальный, понятный и полностью клиентский пример на HTML/CSS/JavaScript. Мы создадим: интерфейс, статический список строк и простую логику фильтрации, которая обновляет выпадающий список при вводе.

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

Что вы получите

  • Рабочий пример поисковой строки с выпадающим списком.
  • Пошаговые инструкции по HTML, CSS и JS файлам.
  • Советы, когда использовать клиентскую фильтрацию, а когда — серверный поиск.
  • Чек-листы, тест-кейсы и критерии приёмки.

Как добавить интерфейс для поисковой строки

Ваш сайт должен содержать поле ввода, где пользователь набирает поисковый запрос. Проще всего использовать и стилизовать его как поисковую строку.

  1. Создайте папку для сайта. Внутри создайте файл index.html.
  2. Заполните файл базовой структурой HTML. Пример:


  
    Searchbar
  
  
    
  1. Внутри div.container добавьте input. При каждом вводе символа будет вызываться функция search(), которую мы реализуем позже.

Search Countries

Примечание: атрибут autocomplete=”off” предотвращает автозаполнение браузера на основе прошлых вводов.

  1. Создайте файл styles.css в той же папке.
  2. Добавьте стили для страницы и поисковой строки:
body {
  margin: 0;
  padding: 0;
  background-color: #f7f7f7;
}
* {
  font-family: "Arial", sans-serif;
}
.container {
  padding: 100px 25%;
  display: flex;
  flex-direction: column;
  line-height: 2rem;
  font-size: 1.2em;
  color: #202C39;
}
#searchbar {
   padding: 15px;
   border-radius: 5px;
}
input[type=text] {
   -webkit-transition: width 0.15s ease-in-out;
   transition: width 0.15s ease-in-out;
}
  1. Подключите CSS в head index.html:
  1. Откройте index.html в браузере и проверьте интерфейс.

HTML website with searchbar in browser

Как создать массив строк для поиска

Перед поиском нужно иметь набор данных. В простейшем случае это массив строк (Array of strings). Мы динамически создадим список элементов в DOM при загрузке страницы.

  1. Под полем ввода добавьте div, в котором будет отображаться выпадающий список:
  1. Создайте файл script.js в той же папке.
  2. В script.js объявите функцию loadSearchData() и инициализируйте массив строк. Это небольшой статический пример:
function loadSearchData() {
  // Data to be used in the searchbar
  let countries = [
    'Australia',
    'Austria',
    'Brazil',
    'Canada',
    'Denmark',
    'Egypt',
    'France',
    'Germany',
    'USA',
    'Vietnam'
  ];
}
  1. Внутри loadSearchData() найдите элемент списка и добавьте для каждого элемента массива тег :
  1. В теле index.html добавьте атрибут onload, чтобы вызвать loadSearchData() при загрузке:
  1. В конце тела подключите script.js:
  1. Добавьте стили для выпадающего списка в styles.css:
  1. Откройте index.html — вы увидите список всех элементов (поиск ещё не работает).

HTML website searchbar with unfiltered search list

Как сделать выпадающий список с совпадающими результатами

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

  1. Сначала скройте список по умолчанию (замените display: block на display: none):
  1. В script.js создайте функцию search(), которая будет вызываться при каждом нажатии клавиши:
  1. Внутри search() получите контейнер списка и элементы с классом listItem:
  1. Получите текущее значение инпута и приведите его к нижнему регистру:
  1. Сравните введённый текст с каждым элементом списка. Если элемент содержит подстроку — покажите его, иначе скройте:
  1. Если совпадений нет, скрывайте контейнер целиком:
  1. Проверьте в браузере: откройте index.html и начните вводить текст — список будет обновляться.

Поле поиска с отображёнными совпадающими результатами

Как использовать выбранный результат

Вы можете превратить каждый элемент в ссылку на страницу или в элемент, который при клике заполняет инпут:

Пример добавления обработчика при генерации списка:

Когда этот подход не подойдёт

Important: клиентская фильтрация хороша для небольших наборов (< несколько тысяч строк) и когда данные статичны. Она не подойдёт, если:

В таких случаях используйте серверный поиск, полнотекстовый движок (Elasticsearch, Typesense) или сторонние API.

Альтернативные подходы

Пошаговая мини-методология (быстрая проверка перед релизом)

  1. Реализовать базовую версию (UI + статический список + фильтр).
  2. Протестировать на 100–1000 строк. Оценить время отклика и потребление памяти.
  3. Добавить дебаунс (например, 200–400 мс) если запуски search() происходят слишком часто.
  4. Если данные > 5000 строк — перенести поиск на сервер или использовать индекс.
  5. Добавить обработку клавиатуры (стрелки, Enter, Esc) для улучшения UX.

Чек-листы по ролям

Дизайнер:

Фронтенд-разработчик:

QA-инженер:

Критерии приёмки

Тест-кейсы / Приёмочные сценарии

  1. Ввод “a” показывает все элементы с буквой “a”.
  2. Ввод “zz” показывает пустой результат и список скрыт.
  3. Клик по элементу заполняет инпут и прячет список.
  4. Нажатие Escape закрывает список без изменения инпута.
  5. Навигация стрелками подсвечивает элементы, Enter выбирает подсвеченный элемент.

Безопасность и приватность

Ограничения и кейсы-края

Короткая сводка

Сводка основных действий: реализуйте HTML-инпут, динамически заполните список, реализуйте search(), улучшите UX клавиатурой и защитой данных.

1‑строчный глоссарий


Краткая инструкция по расширению: добавьте debounce для search(), aria-атрибуты для доступности, и замените статический массив на fetch() запрос к API при необходимости.

Автор
Редакция

Похожие материалы

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство