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 các mục trong danh sách.

Hãy thử ngay lập tức.

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 demo này, chúng ta sử dụng href="#" vì chúng ta không có trang nào để liên kết. Trong 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:

Đặt phong cách cho phần tử nhập liệu 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 liệu */
  background-position: 10px 12px; /* Định vị 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字体 */
  padding: 12px 20px 12px 40px; /* Thêm một khoảng cách nội bộ */
  border: 1px solid #ddd; /* Thêm viền màu xám */
  margin-bottom: 12px; /* Thêm một khoảng trống dưới ô nhập liệu */
}
#myUL {
  /* Xóa bỏ phong cách danh sách mặc định */
  list-style-type: none;
  padding: 0;
  margin: 0;
}
#myUL li a {
  border: 1px solid #ddd; /* Thêm khung cho tất cả các liên kết */
  margin-top: -1px; /* Ngăn chặn khung双边框 */
  background-color: #f6f6f6; /* Màu nền xám */
  padding: 12px; /* Thêm một số padding trong */
  text-decoration: none; /* Xóa underline mặc định của văn bản */
  font-size: 18px; /* Tăng kích thước字体 */
  color: black; /* Thêm màu văn bản đen */
  display: block; /* Chuyển thành phần tử cấp block để chiếm toàn bộ danh sách */
}
#myUL li a:hover:not(.header) {
  background-color: #eee; /* Thêm hiệu ứng hover cho tất cả các liên kết (ngoại trừ tiêu đề) */
}

Bước 3 - Thêm JavaScript:

<script>
function myFunction() {
  // Định nghĩa các biến
  var input, filter, ul, li, a, i, txtValue;
  input = document.getElementById('myInput');
  filter = input.value.toUpperCase();
  ul = document.getElementById("myUL");
  li = ul.getElementsByTagName('li');
  // Duyệt qua tất cả các mục danh sách và ẩn những mục không khớp với truy vấn tìm kiếm
  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>

Hãy thử ngay lập tức.

Lưu ý:Nếu muốn thực hiện tìm kiếm phân biệt chữ hoa và chữ thường, hãy xóa hàm toUpperCase().

Trang liên quan

Giáo trình:Cách lọc/tìm kiếm bảng