Start Test
HTML...
<table id="tbl">
  <tbody>
    <tr>
      <td>row 1</td>
    </tr>
    <tr>
      <td>row 2</td>
    </tr>
  </tbody>
</table>
CSS...
tr:nth-child(odd) td {
  background-color: lightgrey;
}

tr td {
  background-color: white;
}

tr td.over {  
  background-color: red;
}
JavaScript
var ColourNextCell = function(fpsDiv, time, frames, tbl, x, y) {
  var tbody = tbl.childNodes[0];
  if  (x >= tbody.childNodes[y].childNodes.length) {
    x = 0;
    y++;
  }
  if  (y > tbody.childNodes.length) {
    y = 0;
  }
  
  var currentTime = new Date().getTime();
  if  (currentTime - time > 1000) {
    fpsDiv.html(frames+"");
    time = Math.floor(currentTime/1000)*1000;
    frames = 0;
  }
  
    var jqEl = $(tbody.childNodes[y].childNodes[x]);
  var timeoutId = jqEl.data("timeoutId");
  if  (timeoutId) {
    clearTimeout(timeoutId);
  }
    jqEl.addClass("over");
  setTimeout(function() {
    jqEl.animate({"backgroundColor": jqEl.parent().get(0).rowIndex % 2 === 0 ? "lightgrey" : "white"},
          15000, 'linear');
    jqEl.removeClass("over");
  }, 0); 
  setTimeout(function() { ColourNextCell(fpsDiv, time, frames + 1, tbl, x+1, y); }, 0);
};