È male integrare la tabella colspanned con le celle nascoste?

Ho sviluppato alcune funzioni di ordinamento e selezione su un tavolo e ho trovato molto difficile orientare in una tabella con celle colspanned. Ho semplicemente aggiunto le celle con spanning e le ho nascoste. Sembra buono, funziona con il mio js, ​​ottimo per l’indicizzazione, ma mi piacerebbe sapere se questo è un approccio legittimo.

.stuffing { display: none; } 
 
1 2 3 4
1 4
 document.querySelectorAll('table tr:nth-child(1) td')[3].innerHTML // "4" document.querySelectorAll('table tr:nth-child(2) td')[3].innerHTML // "4" 

Se non fosse per le celle nascoste, dovrei accedere al valore di [1] .

Il jQuery tablesorter non si ordina correttamente sulle tabelle con colspan.


Alcuni tag per aiutare le persone a trovare questo problema.
Recupera l’indice “corretto” della tabella interessata da colspan o rowspan.
Trova la “posizione visiva” di ciascuna cella di tabella.

La tua tecnica certamente migliora l’accesso programmatico alle tabelle che hanno colspan s.

Se la tua lunghezza di colspan è limitata, puoi evitare di utilizzare classi hidden come questa:

 td[colspan="2"]+td, td[colspan="3"]+td, td[colspan="3"]+td+td, td[colspan="4"]+td, td[colspan="4"]+td+td, td[colspan="4"]+td+td+td { display: none; } 

Questo genera un errore in Safari:

 document.querySelectorAll('table tr:nth-child(2) td')[3].innerHTML 

Ciò viene risolto indicizzando direttamente nella tabella utilizzando le raccolte di rows e cells (entrambe basate su 0):

 var tb= document.querySelector('table'); tb.rows[0].cells[3].innerHTML; //4 tb.rows[1].cells[3].innerHTML; //4 

Se funziona correttamente, significa che la soluzione è okey. Di sicuro non è bello, ma a volte devi fare cose del genere, alcune soluzioni alternative … Ma dovresti controllarlo su diversi browser e versioni diverse per assicurarti che funzioni per la maggior parte degli utenti. Se il sito dovesse funzionare su dispositivi mobili, dovresti verificarlo anche tu.

E dovresti pensare anche a una cosa. Gli utenti più intelligenti saranno in grado di rimuovere questa class nel codice, quindi dovresti pensarci e verificare se può essere pericoloso per te o no …

Forse un approccio migliore sarebbe quello di dare i tuoi “tds”, alcuni ID o classi. Puoi afferrare Tds in Jquery con la funzione last (). Forse puoi farlo in modo diverso. Devo meno informazioni per essere in grado di pensare a diverse soluzioni appropriate.