2009-06-01 12 views
7

Diciamo che avere una pagina web con seguente codice di esempio:Un modo migliore per determinare persino/righe dispari nella tabella

<tr class="even"> 
    <td>something1</td> 
    <td colspan="1">somthing1.1</td> 
</tr> 


<tr class="odd"> 
    <td>something2</td> 
    <td><b>something2.1</b></td> 
</tr> 

<tr class="even"> 
    <td>something3</td> 
    <td><b>something3.1</b></td> 
</tr> 

Queste non sono in un ciclo così che ho da dire in modo esplicito 'anche' 'strano'. In seguito, se decidiamo di aggiungere una nuova riga tra qualcosa2 e qualcosa3, dobbiamo anche cambiare 'anche' 'dispari' per il resto delle righe.

C'è modo in css di farlo automaticamente in IE6?

Attualmente questo è il mio codice CSS per ancora

.headerTable tr.even { 
    font-weight : bold; 
    font-size : 9pt; 
    font-family : Arial,Helvetica,sans-serif,Verdana,Geneva; 
    background-color: #FFFFFF; 
    height: 20px; 
    color: #000000; 
} 

avevo già jQuery

+0

@OP, si prega di prestare maggiore attenzione alla formattazione e all'ortografia delle domande in futuro. –

+0

@OP - Dici "questi non sono in un loop" - da dove vengono i dati - stai entrando nell'HTML a mano? –

+0

@Rob: immagino sia quello che sta dicendo. Ha senso per me ... –

risposta

13

Dai una prova a jQuery. Poi si può semplicemente fare questo:

$("#myTable tbody tr:visible:even",this).addClass("even"); 
    $("#myTable tbody tr:visible:odd",this).addClass("odd"); 

Il ": visibile" selettore non è realmente necessario, ma quando si filtra una tabella facendo alcune righe nascoste, il metodo continuerà a funzionare correttamente.

+3

L'uso di jQuery per eseguire questa operazione è davvero eccessivo. –

+3

Utilizzare jQuery per fare JUST è davvero eccessivo. Ma usare jQuery ha molti altri vantaggi che uno sviluppatore web potrebbe essere interessato a –

+3

Non se sta già usando jQuery. – Malfist

5

pari/dispari bambino di utilizzare jQuery implementation

+4

L'uso di jQuery per eseguire questa operazione è davvero eccessivo. –

+2

Non se sta già usando jQuery. – Malfist

0

Sì. Puoi usare JavaScript per scorrere questi elementi e resettare le loro classi in base a pari/dispari.

8

L'approccio migliore sarebbe lo :nth-child() pseudo-class.

Ma sfortunatamente non è ancora ampiamente supportato. Quindi probabilmente dovrai usare JavaScript per farlo.

12

Il modo per farlo sarebbe utilizzare le regole nth-child (pari) e (dispari). Sfortunatamente, e questo non dovrebbe sorprendere, IE6 non supporta questo. Così avete alcune opzioni:

A) utilizzare JavaScript, con l'ovvio inconveniente di non lavorare per le persone con JS disabilitato:

var rows = document.getElementById('mytable').getElementsByTagName('tr'); 
for(var x = 0; x < rows.length; x++) { 
    rows[x].className = (x % 2 == 0) ? 'even' : 'odd'; 
} 

Se si prevede di avere bisogno di un comportamento lato client più dinamico sulla vostra applicazione , puoi quindi controllare una libreria come jQuery. Per solo questo non è necessario, ma rende il lavoro con Javascript attraverso i browser un gioco da ragazzi. Faresti quanto sopra con jQuery come mostrato in questa risposta.

A seconda del pubblico, Javascript può essere perfettamente accettabile. Se non lo è, allora forse puoi ...

B) Semplifica il tuo CSS e continua a farlo manualmente. È possibile contrassegnare solo le righe dispari con una classe e quindi rendere lo stile di default della riga lo stile uniforme. Questo ti farà risparmiare un po 'di lavoro quando muovi le cose.

C) Generare le righe a livello di codice. È davvero arcaico inserire dati come quelli in una tabella fissa se si sta aggiornando abbastanza spesso che questo è un problema. Ovviamente sono ignaro delle circostanze, ma dovrebbe essere banale farlo in qualche modo in un modo semplice con un linguaggio semplice come PHP.

D) Interrompere l'utilizzo di un browser obsoleto. :) (Questo è solo per metà scherzando, dato che sono sicuro che è fuori dal tuo controllo)

+0

A e C sono ottime opzioni; D è al di là di molti sviluppatori che controllano il fatto che molti amministratori di sistema non possono rischiare di rompere le vecchie applicazioni sviluppate con un atteggiamento solo per IE6. – Nate

+0

In 'A' dovresti dire qualcosa su jQuery;) – Malfist

+0

Fine. Se insisti. :) –

Problemi correlati