L
Lee
Is there a good way to transpose an HTML table? Meaning, turn the
rows into columns and the columns into rows? I got this far but it's
not working yet. I'm using prototype/scriptaculous. Thanks for any
help.
function transposeHtmlTable(tableEl){
tableEl=$(tableEl);
var tbody=$(tableEl.getElementsByTagName('tbody')[0]);
// put the table into this array so that it can be transposed
var newTableArr=[];
var row=0;
tbody.select('tr').each(function(s){
newTableArr[row]=[];
var col=0;
s.select('td').each(function(t){
newTableArr[row][col]=t.innerHTML;
col++;
});
row++;
});
// transpose the array
var temp;
var transArr=[];
for(var row=0;row<newTableArr.length;row++){
transArr[row]=[];
for(var col=i+1;col<newTableArr[row].length;col++){
if(row==0){
transArr[col]=[];
}
transArr[col][row]=newTableArr[row][col];
}
}
newTableArr=transArr;
// replace table contents with transposed table
tbody.update();
for(var row=0;row<newTableArr.length;row++){
var tr=new Element('tr');
for(var col=0;col<newTableArr[row].length;col++){
var td=new Element('td');
td.update(newTableArr[row][col]);
tr.insert(td);
}
tbody.insert(tr);
}
return tableEl;
}
rows into columns and the columns into rows? I got this far but it's
not working yet. I'm using prototype/scriptaculous. Thanks for any
help.
function transposeHtmlTable(tableEl){
tableEl=$(tableEl);
var tbody=$(tableEl.getElementsByTagName('tbody')[0]);
// put the table into this array so that it can be transposed
var newTableArr=[];
var row=0;
tbody.select('tr').each(function(s){
newTableArr[row]=[];
var col=0;
s.select('td').each(function(t){
newTableArr[row][col]=t.innerHTML;
col++;
});
row++;
});
// transpose the array
var temp;
var transArr=[];
for(var row=0;row<newTableArr.length;row++){
transArr[row]=[];
for(var col=i+1;col<newTableArr[row].length;col++){
if(row==0){
transArr[col]=[];
}
transArr[col][row]=newTableArr[row][col];
}
}
newTableArr=transArr;
// replace table contents with transposed table
tbody.update();
for(var row=0;row<newTableArr.length;row++){
var tr=new Element('tr');
for(var col=0;col<newTableArr[row].length;col++){
var td=new Element('td');
td.update(newTableArr[row][col]);
tr.insert(td);
}
tbody.insert(tr);
}
return tableEl;
}