Even though we use table-less CSS layouts, there are still a lot of times where we still need to use tables for tabular data. Using classes to affect the row colors can be a pain sometimes. Ever catch yourself doing this?
<table>
<tbody>
<tr class="odd">
<td>Row 1</td>
</tr>
<tr>
<td>Row 2</td>
</tr>
<tr class="odd">
<td>Row 3</td>
</tr>
</tbody>
</table>
Adding a class to each row is error prone and takes way too much time. To get around this, a good idea is to use a little JavaScript.
function alternate(id){
if(document.getElementsByTagName){
var table = document.getElementById(id);
var rows = table.getElementsByTagName("tr");
for(i = 0; i < rows.length; i++) {
//manipulate rows
if(i % 2 == 0) {
rows[i].className = "even";
} else {
rows[i].className = "odd";
}
}
}
}
This simple JavaScript takes a table of a certain ID and finds the number of rows. Looping through the rows, it divides the row count by 2 to see if there is a remainder. No remainder, it’s even, else it’s odd. Finally, it automatically inserts the appropriate class. Works great on large tables (<1000 rows). Simply use CSS to style the even and odd classes.
To use, simply attach an event handler:
<body onload="alternate('idOfMyTable')">