2013-11-28 61 views
0

我m的小項目,包含網站列表(最大添加12000名稱), 我要求用戶選擇他們的興趣,因爲我創建了一段代碼在JS小提琴:fiddle包含大量數據的過濾html表格(超過12K行)

$(document).ready(function() { 
    $("#title").keyup(function() { 
     if ($(this).val() != "") { 
      $("#doc_list_content tbody>tr").hide(); 
      $("#doc_list_content td:contains-ci('" + $(this).val() + "')").parent("tr").show(); 
     } else { 
      $("#doc_list_content tbody>tr").show(); 
     } 
    }); 
}); 
$.extend($.expr[":"], { 
    "contains-ci": function (elem, i, match, array) { 
     return (elem.textContent || elem.innerText || $(elem).text() || "").toLowerCase().indexOf((match[3] || "").toLowerCase()) >= 0; 
    } 
}); 

代碼工作正常,數據量小,但是當到了12000行這導致瀏覽器無響應的錯誤。

我試過搜索並用我的代碼玩了很多。我想用JS或PHP(它littlebit知識)

我的問題是相同類型的功能(對爵士小提琴):

1>是否使用這種類型的排序是可行的? 2>任何js/jquery解決方案? 3>我知道一點點的PHP作爲服務器端腳本,它可以幫助解決問題。

謝謝。

+0

搜索數據數組,而不是DOM。桌子來自12K行嗎? – charlietfl

+0

數據在mysql表中,加載時頁面加載 – Ravi

回答

1

1不要使用jQuery的...這很慢。使用純javascript

2創建包含該表的陣列


var tbl=[ 
[a1,b1,c1,d1], 
[a2,b2,c2,d2], 
] 

3使用while--循環,因爲它是最快

var l=tbl.length 
while(l--){ 
} 

4使用非常小的速記或按位檢查,因爲他們更快。

var l=tbl.length 
while(l--){ 
!tbl[l][0]||(SOMETOGGLEFUNCTION(l))//l is the index of the real table 
} 

這是我知道檢查快速12k記錄的唯一方法。

+0

有效..謝謝。 – Ravi

1

如果是我,我基本上會使用某種'分頁'來限制用戶對數據的視圖'數據較小的塊,但可能仍然允許某種'搜索'功能,搜索/過濾通過所有的數據(不只是可見的塊) - 通過一個數組我猜。

在過去的項目中,我發現對於速度/性能,最好在用戶第一次向下滾動到當前數據塊的「底部」時逐漸向DOM添加對象,然後添加新的大塊,並刪除前面的塊......根據他們在書中的位置,而不是將書的所有單個頁面放在他們面前的方式 - 用戶如何轉動書的頁面 - 可能不是最好的比喻,但希望你按照我的想法。祝你好運。