Ciao a tutti,
vi scrivo dopo aver passato 2 giorni per tentare di risolvere il problema
Sto cercando di sviluppare una tabella html con thead statico allo scroll.
Per farlo ho creato 2 DIV dove sul primo eseguo un clone del thead della tabella sottostante e poi tramite un loop "ricopio" la larghezza di ogni td dal thead originale.
Sto cercando di ottimizzare al massimo i tempi di risposta ed ho notato che il tempo necessario al loop varia a seconda del numero di righe della tabella.
Con meno di 100 righe il loop con 9 colonne avviene in circa 9ms ma con 15000 righe ci vogliono circa 300/350 ms. Il fatto è che il numero di colonne da iterare è sempre lo stesso ed il codice JS punta sempre al thead della tabella originale, mai al tbody...
Perché la lunghezza della tabella impatta? Con 15000 righe ogni iterazione del loop impiega circa 30/35 ms.
Di seguito il codice JS
vi scrivo dopo aver passato 2 giorni per tentare di risolvere il problema
Sto cercando di sviluppare una tabella html con thead statico allo scroll.
Per farlo ho creato 2 DIV dove sul primo eseguo un clone del thead della tabella sottostante e poi tramite un loop "ricopio" la larghezza di ogni td dal thead originale.
Sto cercando di ottimizzare al massimo i tempi di risposta ed ho notato che il tempo necessario al loop varia a seconda del numero di righe della tabella.
Con meno di 100 righe il loop con 9 colonne avviene in circa 9ms ma con 15000 righe ci vogliono circa 300/350 ms. Il fatto è che il numero di colonne da iterare è sempre lo stesso ed il codice JS punta sempre al thead della tabella originale, mai al tbody...
Perché la lunghezza della tabella impatta? Con 15000 righe ogni iterazione del loop impiega circa 30/35 ms.
Di seguito il codice JS
Codice:
var originTbl = document.querySelector("div.origin table.mytable");
var originTbl_Head = originTbl.querySelector("thead");
var cloneTbl = document.querySelector("div.cloned table.mytable");
var clone = originTbl_Head.cloneNode(true);
cloneTbl.appendChild(clone);
originTbl_Head.style.visibility = 'hidden';
var tds = cloneTbl.querySelectorAll('thead tr:first-child td');
var originTbl_Tbody_Tr = originTbl.querySelectorAll("tbody tr");
var td_list = originTbl_Tbody_Tr[0].querySelectorAll('td');
console.time("loop");
for(i = 0; i < tds.length; i++) {
var td = td_list[i];
var width = td.clientWidth;
tds[i].style.width = width + 'px';
}
console.timeEnd('loop');