Ghi chú. Bài đăng này đã hơn một năm tuổi và vì vậy thông tin ở đây có thể đã lỗi thời. Nếu bạn phát hiện ra điều gì đó, vui lòng để lại nhận xét và chúng tôi sẽ cố gắng khắc phục
Sử dụng tập lệnh phía máy chủ để tìm kiếm mọi thứ có thể phức tạp hoặc đơn giản tùy theo tình huống yêu cầu. Tuy nhiên, nếu bạn có một bảng kết quả và bạn chỉ muốn bật tìm kiếm JavaScript đơn giản trên bảng đó thì đây có thể là tập lệnh dành cho bạn
Để tìm kiếm một bảng bằng JavaScript, bạn cần chia bảng thành các bit, điều này có thể được thực hiện bằng cách sử dụng hàm getElementsByTagName(), lấy tên của phần tử mà bạn muốn nắm bắt. Vì vậy, để lấy tất cả các hàng của bảng dưới dạng một mảng, bạn cần chuyển giá trị của tr
var rows = document.getElementsByTagName("tr");
Sau đó, chúng tôi có thể lặp qua các hàng này, lấy cột mà bạn muốn tìm kiếm, với mã sau
for ( var i = 0; i < rows.length; i++ ) {
var fullname = rows[i].getElementsByTagName("td");
fullname = fullname[0].innerHTML.toLowerCase();
}
Trước khi tiến xa hơn, chúng ta cần một biểu mẫu để người dùng có thể nhập thông tin và một bảng có thể được sử dụng để tìm kiếm. Đầu tiên là biểu mẫu, hành động của hộp nhập liệu sẽ khiến một hàm gọi là doSearch() được chạy, hàm này sẽ chứa mã tìm kiếm của chúng ta
Tiếp theo, bảng. Lưu ý rằng tôi đã thêm một hàng bổ sung vào cuối bảng này. Điều này sẽ được sử dụng để hiển thị ghi chú cho người dùng nếu họ đã nhập truy vấn không tìm thấy
One
Two
Three
Four
Five
Six
Seven
Eight
(no listings that start with "")
Điều đầu tiên chúng ta cần làm trong chức năng tìm kiếm của mình là chuẩn bị thuật ngữ tìm kiếm. Điều này biến chuỗi truy vấn thành chữ thường, sau đó chúng ta có thể khớp với cột của bảng
var q = document.getElementById("q");
var v = q.value.toLowerCase();
Bây giờ chúng ta có thể đi qua từng giá trị hàng và cố gắng khớp giá trị đó với giá trị trong chuỗi truy vấn. Nếu khớp thì hiển thị hàng, không khớp thì ẩn
for ( var i = 0; i < rows.length; i++ ) {
var fullname = rows[i].getElementsByTagName("td");
fullname = fullname[0].innerHTML.toLowerCase();
if ( fullname ) {
if ( v.length == 0 || (v.length < 3 && fullname.indexOf(v) == 0) || (v.length >= 3 && fullname.indexOf(v) > -1 ) ) {
rows[i].style.display = "";
} else {
rows[i].style.display = "none";
}
}
}
Đây là chức năng đầy đủ, bao gồm mã để triển khai ghi chú không có kết quả
getElementsByTagName
Chia sẻ cái này
Tweet cái này đi
Chia sẻ cái này
Được viết bởi. Philip Norton
Phil là người sáng lập và quản trị viên của #. viết mã và là một chuyên gia CNTT làm việc ở Tây Bắc Vương quốc Anh. Tốt nghiệp năm 2003 tại Đại học Aberystwyth với bằng Thạc sĩ Khoa học Máy tính Phil trước đây đã từng làm quản trị viên cơ sở dữ liệu, trên bàn trợ giúp CNTT, huấn luyện viên hệ thống, kiến trúc web, tư vấn khả năng sử dụng, blogger và chuyên gia SEO. Phil có nhiều kinh nghiệm xây dựng và duy trì các trang web PHP cũng như làm việc với các công nghệ liên quan như JavaScript, HTML, CSS, XML, Flex, Apache, MySQL và Linux
Bạn muốn biết thêm?
Hãy để chúng tôi giúp. Thuê chúng tôi để cung cấp dịch vụ đào tạo, tư vấn, xử lý sự cố và hơn thế nữa
hỗ trợ chúng tôi
Hãy ủng hộ chúng tôi và cho phép chúng tôi tiếp tục viết bài
Trở thành người bảo trợ
Mua cho tôi một ly cà phê
Bình luận
liên kết cố định
Có cách nào để loại trừ một số hàng nhất định không. Điều gì sẽ xảy ra nếu tôi có một hàng tiêu đề phía trên "Một, Hai, Ba" được gọi là "Danh mục". Tôi có thể loại trừ điều đó và để nó luôn xuất hiện không?
alfred smith (Thu, 16/04/2009 - 16. 09)
liên kết cố định
Chắc chắn, làm điều đó khá dễ dàng và không cần thay đổi nhiều. Ngay sau vòng lặp for tìm kiếm từng cột, hãy thêm đoạn mã sau.
rows[0].style.display = "";
Điều này sẽ buộc hàng đầu tiên của bảng được hiển thị
philipnorton42 (Thứ sáu, 17/04/2009 - 07. 52)
liên kết cố định
Tôi chỉ cải thiện một chút mã
Hàm doSearch sẽ yêu cầu 2 tham số là tableId và queryId