Script for merging cells (across rows) in the same column

S

samn

I wrote the following script in order to traverse an HTML table and
merge the cells that have the same value across multiple rows. For some
reason, however, it works for the first, third, and fourth columns in
my table, but in the second column, the merged cell is not aligned at
the center vertically. The cells do get merged, but the cells in the
second column are always aligned at the top. Trying cell.valign =
"middle" had no effect.

Any thoughts? Could it be because I'm not actually deleting the cells
that are to be merged with the top of each such block; instead I merely
set style.display to none for these cells.

Here's my script:

var currCell;
var totRows = T1.rows.length;
var totColumns = T1.rows[1].cells.length;
var numValues = T2.rows[0].cells.length-2;

var i,j;
var nextRowMatch = true;

var myCell;

for (i=0; i<(totColumns-numValues); ++i) {

var currRow = 1;
var j=currRow+1;
var numCellsMerge = 1;

var identical = false;

while (j<totRows) {
var currCell = T1.rows[currRow].cells.innerText;
var nextCell = T1.rows[j].cells.innerText;

if (currCell != nextCell) {

if (i>0) {

var start=(i-1);
var sameValues = 1;

while ((start >=0) && (sameValues == 1)) {
var prevColText =
T1.rows[currRow].cells[start].innerText;
var prevColNextRowText =
T1.rows[currRow+1].cells[start].innerText;
if (prevColText != prevColNextRowText) {

sameValues = 0;
} else {
start = start-1;
}

}
if (sameValues == 0) {
numCellsMerge = 1;
}

}


if (numCellsMerge > 1) {
for (var k=currRow+1; k<j; ++k) {
T1.rows[k].cells.style.display = 'none';
}
myCell = T1.rows[currRow].cells;
myCell.rowSpan = numCellsMerge;

}

currRow=j;
++j;
numCellsMerge = 1;
identical = false;

} else {
++numCellsMerge;
++j;
identical = true;
}

}

if (identical) {
if (numCellsMerge > 1) {

for (var x=currRow+1; x<totRows; ++x) {
T1.rows[x].cells.style.display = 'none';
}
myCell = T1.rows[currRow].cells;
myCell.rowSpan = numCellsMerge;

}
}

}
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,995
Messages
2,570,230
Members
46,817
Latest member
DicWeils

Latest Threads

Top