Cách lọc/tìm kiếm danh sách

Học cách sử dụng JavaScript để tạo danh sách lọc.

Lọc danh sách

Cách sử dụng JavaScript để tìm kiếm mục trong danh sách.

Попробуйте сами

Tạo danh sách tìm kiếm

Bước 1 - Thêm HTML:

<input type="text" id="myInput" onkeyup="myFunction()" placeholder="Tìm kiếm tên...">
<ul id="myUL">
  <li><a href="#">Adele</a></li>
  <li><a href="#">Agnes</a></li>
  <li><a href="#">Billy</a></li>
  <li><a href="#">Bob</a></li>
  <li><a href="#">Calvin</a></li>
  <li><a href="#">Christina</a></li>
  <li><a href="#">Cindy</a></li>
</ul>

Lưu ý:Trong演示 này, chúng tôi sử dụng href="#" vì chúng tôi không có trang nào để liên kết. Trong ứng dụng thực tế, điều này nên là URL thực sự của trang cụ thể.

Bước 2 - Thêm CSS:

Thiết lập phong cách cho phần tử nhập và danh sách:

#myInput {
  background-image: url('/css/searchicon.png'); /* Thêm biểu tượng tìm kiếm vào ô nhập */
  background-position: 10px 12px; /* Đặt vị trí biểu tượng tìm kiếm */
  background-repeat: no-repeat; /* Không lặp lại hình ảnh biểu tượng */
  width: 100%; /* Độ rộng toàn bộ */
  font-size: 16px; /* Tăng kích thước phông chữ */
  padding: 12px 20px 12px 40px; /* Thêm một chút lề nội bộ */
  border: 1px solid #ddd; /* Thêm viền màu xám */
  margin-bottom: 12px; /* Thêm một chút không gian dưới ô nhập */
}
#myUL {
  /* Удаление mặc định của樣式 danh sách */
  list-style-type: none;
  padding: 0;
  margin: 0;
}
#myUL li a {
  border: 1px solid #ddd; /* Добавить рамку для всех ссылок */
  margin-top: -1px; /* Предотвратить двойную рамку */
  background-color: #f6f6f6; /* Серый цвет фона */
  padding: 12px; /* Добавить внутренние поля */
  text-decoration: none; /* Убрать стандартную подстрочку текста */
  font-size: 18px; /* Увеличить размер шрифта */
  color: black; /* Добавить черный цвет текста */
  display: block; /* Сделать его блоковым элементом, чтобы он занимал всю список */
}
#myUL li a:hover:not(.header) {
  background-color: #eee; /* Добавить эффект наведения для всех ссылок (кроме заголовка) */
}

Шаг 3 - Добавьте JavaScript:

<script>
function myFunction() {
  // Объявить переменные
  var input, filter, ul, li, a, i, txtValue;
  input = document.getElementById('myInput');
  filter = input.value.toUpperCase();
  ul = document.getElementById("myUL");
  li = ul.getElementsByTagName('li');
  // Пройтись по всем элементам списка и скрыть те, которые не соответствуют поисковому запросу
  for (i = 0; i < li.length; i++) {
    a = li[i].getElementsByTagName("a")[0];
    txtValue = a.textContent || a.innerText;
    if (txtValue.toUpperCase().indexOf(filter) > -1) {
      li[i].style.display = "";
    } else {
      li[i].style.display = "none";
    }
  }
}
</script>

Попробуйте сами

Подсказка:Если необходимо выполнить поиск с учетом регистра, удалите toUpperCase().

Соответствующие страницы

Учебник:Как фильтровать/поиск таблицы