0
HTML table
을 검색하고 검색어에 따라 표시/숨기기를하는 "실시간 검색"상자가 있습니다.
작은 테이블에서는 완벽하게 작동하지만 테이블 데이터가 커지면 검색 속도가 느려집니다.
내 코드 :
$("#search").keyup(function() {
var raderna = $("#history tbody tr");
var value = this.value.toLowerCase().trim();
if(value.length == 0) {
raderna.each(function(index) {
if (index !== 0) {
$row = $(this);
if($row.hasClass("hiddenRow")) {
$row.hide();
} else {
$row.show();
}
}
});
return false;
}
raderna.each(function (index) {
$(this).find("td").each(function() {
var id = $(this).text().toLowerCase().trim();
var not_found = (id.indexOf(value) == -1);
$(this).closest('tr').toggle(!not_found);
return not_found;
});
});
});
내가 속도를 높이기 위해 무엇을 할 수 있는지 어떤 아이디어?
테이블 행의 모든 필드를 문자열로 연결하고 배열로 푸시하십시오. 이제이 배열을 루프하여 문자열을 검색 할 수 있습니다. – Tyranicangel
만약 여러분이 angularjs를 사용할 수 있다면 그것을보십시오. ng-filter로 ng-repeat를 사용할 수 있다면이 과정은 정말 간단합니다. – Tyranicangel
자바 스크립트 객체/배열을 사용하여 실시간 검색을 관리한다는 생각보다 두 번째로 생각합니다. DOM으로 작업하는 것은 일반적으로 변수를 직접 사용하는 것보다 훨씬 느립니다. 아마도 모든 테이블 데이터를 JSON 파일에 저장하고 페이지로드시 테이블에서 동적으로 테이블을 생성 할 수 있습니까? 아마도 페이지를 완전히로드하는 데 약간 느려지 겠지만 돌 한 개로 두 마리의 새를 죽일 수 있습니다. 빠른 조회가 가능하며 테이블의 내용이 변경되면 업데이트해야하는 파일이 하나뿐입니다. JSON은 HTML보다 읽기 쉽고 이식성이 좋습니다. – Serlite