Если вы используете jQuery (или не против его добавления), это сделает работу лучше, чем любой из этих хаков.
function getMaxColCount($table) {
var maxCol = 0;
$table.find('tr').each(function(i,o) {
var colCount = 0;
$(o).find('td:not(.maxcols),th:not(.maxcols)').each(function(i,oo) {
var cc = Number($(oo).attr('colspan'));
if (cc) {
colCount += cc;
} else {
colCount += 1;
}
});
if(colCount > maxCol) { maxCol = colCount };
});
return maxCol;
}
Чтобы упростить реализацию, я декорирую любой тд / й, который мне нужен, с помощью класса, такого как "maxCol", тогда я могу сделать следующее:
$('td.maxcols, th.maxcols').each(function(i,o) {
$t = $($(o).parents('table')[0]); $(o).attr('colspan', getMaxColCount($t));
});
Если вы найдете реализацию, для которой это не сработает, не хлопайте ответом, объясните в комментариях, и я обновлю, если это будет возможно.