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;
}
実装を容易にするために、調整が必要な td/th を「maxCol」などのクラスで装飾し、次のようにします。
$('td.maxcols, th.maxcols').each(function(i,o) {
$t = $($(o).parents('table')[0]); $(o).attr('colspan', getMaxColCount($t));
});
これが機能しない実装を見つけた場合は、答えを非難しないでください。コメントで説明してください。カバーできるかどうかを更新します。