Bảng lọc cũng giống như Danh sách bộ lọc, chúng tôi sẽ cho phép người dùng lọc lại các kết quả mà họ muốn lấy từ một danh sách dữ liệu. Tuy nhiên, khác với Danh sách bộ lọc, Bảng bộ lọc sẽ hiển thị các dữ liệu đó dưới dạng một bảng thay vì một giá trị đơn giản
Bài viết này đã được đăng tại freetuts. net , không được sao chép dưới mọi hình thức.
Trong bài này mình sẽ cùng các bạn tạo ra một Filter table đơn giản nhé. Hãy làm nó
1. Build interface
Việc đầu tiên là chúng ta cần tạo ra các thành phần trong ứng dụng, chúng đóng vai trò như nền của các ứng dụng. Các bạn tạo tệp index.html
và đặt đoạn mã sau vào trong phần thân thẻ
Mã CHẠY
Freetuts.net hướng dẫn tạo Filter Table
Club Country Arsenal England Atletico Madrid Spain Barcelona Spain Liverpool England Real Madrid Spain Bayern Munich Germany Borussia Dortmund Germany Paris Saint-Germain France Manchester United England Monaco France
Trong phần này, mình tạo ra hai thành phần chính của một bảng lọc, đó là một ô đầu vào để nhập giá trị tìm kiếm và một bảng [bảng] để hiển thị các kết quả tìm được dựa trên giá trị đầu vào ở ô đầu vào. Mình cũng đặt tất cả các thành phần trong thẻ div có class="container"
để dễ dàng định dạng cho toàn bộ các thành phần
Bài viết này đã được đăng tại [free tuts. net]
OK vậy là xong phần giao diện, chúng ta đến bước tiếp theo nhé
2. Thêm CSS để định dạng các thành phần
Trong bước này chúng ta sẽ sử dụng CSS để định dạng cho các thành phần của trang, các bạn dán đoạn mã sau vào bên trong kiểu thẻ
Mã CHẠY
* { box-sizing: border-box; } .container { width: 500px; margin: auto; } #myInput { background-position: 10px 12px; background-repeat: no-repeat; width: 100%; font-size: 16px; padding: 15px; border: 1px solid #ddd; margin-bottom: 12px; } #myTable { display: none; border-collapse: collapse; width: 100%; border: 1px solid #ddd; font-size: 18px; } #myTable th, #myTable td { text-align: left; padding: 12px; } #myTable tr { border-bottom: 1px solid #ddd; } #myTable tr.header, #myTable tr:hover { background-color: #f1f1f1; }
Tất cả đều là các thuộc tính cơ bản trong CSS nên mình không giải thích nữa, các bạn chỉ cần lưu ý một điểm là chúng ta sẽ mặc định ẩn phần bảng chứa kết quả đi với thuộc tính display: none;
, sau khi người dùng tiến hành . Nếu bạn muốn hiển thị tất cả các kết quả ngay khi tải xong trang thì bỏ qua dòng này đi nhé
3. Thêm xử lý Javascript
Trong bước cuối cùng này, chúng ta sẽ sử dụng javascript để tìm kiếm kết quả dựa trên giá trị người dùng nhập vào và hiển thị kết quả phù hợp, các bạn bổ sung giúp mình đoạn mã đoạn mã này vào sau thẻ body
Mã CHẠY
// lấy thẻ input var input = document.getElementById["myInput"]; // định nghĩa hàm xử lý myFunction function myFunction[] { var filter, table, tr, td, i; // lấy giá trị người dùng nhập filter = input.value.toUpperCase[]; // lấy phần bảng hiển thị kết quả table = document.getElementById["myTable"]; // lấy tất cả các thẻ tr tr = table.getElementsByTagName["tr"]; //Nếu filter không có giá trị ẩn các kết quả if [!filter] { table.style.display = "none"; }else{ // lặp qua tất cả các thẻ tr for [i = 0; i < tr.length; i++] { // lấy giá trị của thẻ td đầu tiên đại diện cho tên club td = tr[i].getElementsByTagName["td"][0]; if [td] { // kiểm tra giá trị filter có tồn tại trong thẻ tr không if [td.innerHTML.toUpperCase[].indexOf[filter] > -1] { //nếu có hiển thị chúng table.style.display = "table"; tr[i].style.display = ""; } else { // nếu không ẩn chúng tr[i].style.display = "none"; } } } } } //gán sự kiện cho thẻ input input.addEventListener["keyup", myFunction];
Mình đã giải thích rất cụ thể, các bạn đọc chú thích để hiểu rõ về các bước hoạt động của đoạn mã script này nhé. Có điểm cần lưu ý là mình đều sử dụng phương thức toUpperCase[]
cho cả giá trị phụ và giá trị bên trong thẻ td chứa tên câu lạc bộ[cái mà chúng ta sẽ so sánh] khi kiểm tra để chúng giống nhau là chữ in hoa, vậy
Time run file index.html
to view results nhé
4. Lời kết
Như vậy, qua bài viết này mình đã cùng các bạn xây dựng thành công một Filter table đơn giản, hi vọng rằng nó sẽ hỗ trợ các bạn phần nào trong quá trình xây dựng website của mình. Nếu các bạn muốn tạo danh sách bộ lọc với kết quả là các giá trị đơn giản, hãy tham khảo qua bài viết Danh sách bộ lọc
Nếu có bất kỳ thắc mắc nào các bạn có thể lùi lại trong phần bình luận, xin hẹn gặp lại trong các bài viết tiếp theo trên freetuts. net