Advertisement
Igor150195

live-search

May 21st, 2024
597
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <script>
  2.     document.addEventListener('DOMContentLoaded', function () {
  3.         // Ждем, пока весь контент загрузится, прежде чем выполнять скрипт
  4.  
  5.         const form = document.querySelector('.live-search'); // Находим форму с классом .live-search
  6.         const input = form.querySelector('.search-input'); // Находим поле ввода с классом .search-input внутри формы
  7.         const articleItems = document.querySelectorAll('.article-item'); // Находим все элементы с классом .article-item
  8.         const noResult = document.querySelector('.resources-no-result'); // Находим поле блок с классом .resources-no-result
  9.  
  10.         if (form) {
  11.             // Проверяем, существует ли форма
  12.             form.addEventListener('submit', function (e) {
  13.                 e.preventDefault(); // Предотвращаем отправку формы, чтобы не перезагружать страницу
  14.             });
  15.  
  16.             input.addEventListener('input', function () {
  17.                 // Добавляем обработчик события ввода в поле поиска
  18.                 const searchText = input.value.trim().toLowerCase(); // Получаем введенный текст и приводим его к нижнему регистру
  19.  
  20.                 articleItems.forEach(articleItem => {
  21.                     // Перебираем каждый элемент .article-item
  22.                     const title = articleItem.querySelector('.article-title'); // Находим элемент заголовка с классом .article-title внутри .article-item
  23.                     if (title) {
  24.                         const titleText = title.textContent.trim().toLowerCase(); // Получаем текст заголовка и приводим его к нижнему регистру
  25.  
  26.                         if (titleText.includes(searchText)) {
  27.                             // Если текст заголовка содержит введенный текст
  28.                             articleItem.classList.add('show-block'); // Добавляем класс для отображения элемента
  29.                             articleItem.classList.remove('hide-block'); // Удаляем класс скрытия элемента
  30.                         } else {
  31.                             // Если текст заголовка не содержит введенный текст
  32.                             articleItem.classList.remove('show-block'); // Удаляем класс отображения элемента
  33.                             articleItem.classList.add('hide-block'); // Добавляем класс скрытия элемента
  34.                         }
  35.                     }
  36.                 });
  37.  
  38.                 let hasClassFlag = checkAllElementsHaveClass('show-block');
  39.  
  40.                 if (!hasClassFlag) {
  41.                     noResult.classList.remove('hide-block');
  42.                 } else {
  43.                     noResult.classList.add('hide-block');
  44.                 }
  45.             });
  46.  
  47.             function checkAllElementsHaveClass(hasClass) {
  48.                 const elements = articleItems;
  49.                 let allHaveClass = true;
  50.    
  51.                 elements.forEach(element => {
  52.                     if (!element.classList.contains(hasClass)) {
  53.                         allHaveClass = false;
  54.                     }
  55.                 });
  56.    
  57.                 return allHaveClass;
  58.             }
  59.         }
  60.     });
  61. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement