2013-03-07 33 views
0
頁面

我的代碼片段循環和將數據追加到一個HTML表格jQuery的附加性能數據時

for(var i = 0; i < iRowCount; i++) 
    { 
     var sTempVal = aAdditionValues[i]; 
     var iStartColumn = 0; 
     var iIndex = 0; 

     var aTempVal = sTempVal.split("");   
     aTempVal.reverse(); 
     for(var r = iColCount - 1; r > 0; r--) 
     { 
      $("#additionTable tr:eq("+i+") td:eq("+r+")").append(aTempVal[iIndex]);    
      iIndex++; 
     } 
     iStartColumn = 0; 
     iIndex = 0; 
    } 

數組aAdditionValues[i];只是數字數組。

是否有可以實現的性能增強功能?

回答

1

由於您操縱現有表格的某些單元格,因此沒有太多改進空間。我建議至少緩存jquery選擇器:

var $table = $('#additionTable'); // outside the loop ofc 
$("tr:eq("+i+") td:eq("+r+")", $table).append(/* ... */); 
2

現在你正在向DOM的每個循環添加一些東西,這是非常低效的。首先創建要在JavaScript中插入的對象,然後將其添加到DOM,並將其插入到一個事件中。這將最小化重新繪製文檔所需的計算。

1

小改進: 您至少可以擺脫aTempVal.reverse();並從最後開始循環。

同樣刪除iStartColumn你沒有改變價值。

1

每當你追加東西到DOM你重建它,它需要大量的資源。它會更快地創建表格,由createElement("table")填充,然後才能做一個append

+0

或者當然,如果可以創建一個表的一部分並且通過一個'append'來插入它將會更好=) – XiM 2013-03-07 09:59:24