2013-04-22 10 views
60

Immaginate una lista di liste simile a questo:Più <thead>/<tbody> in Tabella valido?

var list = [ 
    { name: 'group1', 
    items: [ 1, 2, 3, 4, 5 ] 
    }, 
    { name: 'group2', 
    items: [ 1, 2, 3, 4, 5 ] 
    }, 
    etc... 
] 

Ora dimenticare tutto "I tavoli sono per i dati non progettare" argomento, ho voluto per visualizzare un singolo tavolo per list e hanno un separato <thead> e <tbody> per ogni voce in list.

È tecnicamente valido? Funziona nel browser, ma il mio spider senses are tingling on this one.

+1

Si può sicuramente avere più tbodies, dovrei controllare le specifiche per vedere su thead. –

+2

@KevinB: IIRC al massimo un thead e uno tfoot: http://www.w3.org/TR/html-markup/table.html#table – Zeta

+1

@unor La mia domanda ha a che fare con più '' e ' 'elementi, non' '. Non sono uguali e sono dettati da regole separate. –

risposta

93

È possibile disporre di tutti gli elementi <tbody> come desiderato, ma non più di uno ciascuno di <thead> e <tfoot>. Reference:

modello contenuto:

In questo ordine: opzionalmente un elemento didascalia, seguita da zero o più elementi COLGROUP, seguito opzionalmente da un elemento thead , seguito da zero o più elementi tbody o uno o più elementi tr, seguiti facoltativamente da un elemento tfoot, facoltativamente mescolati con uno o più elementi di supporto dello script.

+0

Grazie per la risposta. BTW il link è rotto ora. –

+0

@Accountant: link corretto e risposta aggiornati per riflettere l'ultimo standard, grazie! – Jon

4

Ritengo che sia proprio come gli attributi id. Dovrebbero essere unici, ma puoi effettivamente riutilizzarli nella stessa pagina e puoi ancora selezionarli. Detto questo, solo perché può essere fatto non significa che dovrebbe essere fatto.

Vorrei raccomandarlo.

+3

Non c'è niente di sbagliato nell'avere più di uno '', ma secondo le specifiche ci può essere solo un '' e uno ''. – Pointy

+0

Da quello che posso dire, non stava suggerendo di farlo affatto. Dicendo che ha funzionato nel browser? –

+0

@Sebas La prima frase sta rendendo noto che è possibile aggiungere più che on, proprio come l'id, ma non si dovrebbe. – Justin

8

C'è al massimo uno thead e uno tfootallowed, quindi non è necessario creare intestazioni aggiuntive. Dopotutto lo th in un thead dà un significato alle tue colonne, come "ora del giorno", "temperatura", "quantità di gatti attualmente in fiamme".

Se le voci nell'elenco sono correlate dovrebbero essere tutte nella stessa tabella e si dovrebbe fornire un'intestazione adatta per visualizzare tale relazione.

Se le voci sono effettivamente non correlate, è necessario fornire una tabella singola per ciascuna di esse. Puoi comunque applicare lo stesso CSS su ogni tabella per ottenere un risultato positivo.

+3

"Se le voci del tuo elenco sono correlate dovrebbero essere tutte nella stessa tabella e dovresti fornire un'intestazione adatta per visualizzare tale relazione" - Penso che talvolta ripetere la stessa intestazione in una tabella molto lunga sia consigliabile l'utente non deve scorrere indietro verso l'alto per ricordare quali sono le colonne. Naturalmente, esistono altre soluzioni (ad esempio JavaScript per utilizzare un'intestazione di tabella "adesiva" o CSS sugli elementi di riga della tabella per renderla visivamente diversa dalle altre righe). – Mike