En realidad el código que ha utilizado marlanga esta bastante bien. Lo único que quizá que para una persona que no haya visto el suficiente código JavaScript pues este código resulte complicado aunque si se mira detenidamente y linea por linea se puede llegar a entender (Te lo dice una persona que lleva 2 meses dando JavaScript). A mi la única solución que se me ocurre a tu problema y que ademas utiliza estructura DOM como tu pedías es la siguiente:
Código Javascript
:
Ver originalvar compra=document.getElementById("comprar");
compra.addEventListener('click',cambiaColor,false);
function cambiaColor(){
var tbl = document.getElementById("tabla");
var tblBody = tbl.firstChild;
for (var i = 0; i < columna.length; i++) {
var fila = tblBody.childNodes[i];
for (var j = 0; j < filas.length; j++) {
var celda = fila.childNodes[j];
celda.style.background='orange';
if(celda.style.background=='orange'){
celda.style.background='red';
}
else{
celda.style.background='green';
}
fila.appendChild(celda);
}
}
}
Lo que tenias que hacer es acceder a cada uno de los hijos de la etiqueta <table> en este caso. Lo de contar la cantidad de celdas pulsadas lo puedes hacer creando un contador y que cada vez que pulses una que aumente en una unidad o no se como quieres que lo haga, eso es ya a tu elección.
PD: Si alguien que sepa más JavaScript del que yo se y ve algún error en mi código que se lo comunique a dglypho, yo he intentado ayudar con lo que se. Si esta bien el código que lo comunique también para que sepa que por lo menos tengo algo de idea en estos 2 meses que llevo con JavaScript jejejejeje