I think it is working now when I check and uncheck exam types in any order using the new subsOrdered object.
subsOrdered = {};
i = 0;
j = 0;
for(var item in subs)
{
subsOrdered[item] = {rows:i, columns:j, vals:subs[item].vals};
j++;
if(j>2){
i++;
j = 0;
}
//need a new object here subsOrdered{} which is a reordering of subs in the order row 0 cells 1 to 2 and then row 1 cells 0 to 2 etc.
//console.log("subsOrdered: subjects: " + item + " rows: " + subsOrdered[item].rows + " columns: " + subsOrdered[item].columns + " result: " + subsOrdered[item].vals);
}
for(var i=countRows-1; i>0; i--)
{
//console.log("cleared");
//deletes all rows except row 0 each time
document.getElementById('examTables').deleteRow(i);
}
//console.log("subjects: " + item + " rows: " + subs[item].rows + " columns: " + subs[item].columns + " result: " + subs[item].vals);
var tblBody = document.getElementById('examTables');
//var tblBody = document.createElement("table");
row = "";//clear the row variable
row = document.createElement("tr");
position();
for(var item in subsOrdered)
{
//console.log(item);
//console.log("subjects: " + item + " rows: " + subs[item].rows + " columns: " + subs[item].columns + " result: " + subs[item].vals);
var cols = subsOrdered[item].columns;
if(cols == 0)
{
//console.log("neither 0 nor 2, col: " + cols);
row = document.createElement("tr");
}
//console.log("subs: subjects: " + item + " rows: " + subs[item].rows + " columns: " + subs[item].columns + " result: " + subs[item].vals);
//console.log("subsOrdered: subjects: " + item + " rows: " + subsOrdered[item].rows + " columns: " + subsOrdered[item].columns + " result: " + subsOrdered[item].vals);
var cell = document.createElement("td");
var text = document.createTextNode(" " + item + " ");
cell.appendChild(text);
row.appendChild(cell);
//console.log("Rows in current table: " + document.getElementById('examTables').rows.length);
if(cols == 2)
{
//var row = document.createElement("tr");
//console.log("end a row, col: " + cols);
tblBody.appendChild(row);
}
}
//var row = document.createElement("tr");
tblBody.appendChild(row);
console.log("End of subs iteration");
//subs[item].vals.length
//console.log(Object.keys(subs).length);//can get length
}
Thanks for all your help