Наверное, вам подойдет такой вариант:
function add(toAdd) {
var table = document.getElementById('table');
var count = table.getElementsByTagName("tr").length;
for(var i = 0; i < count + toAdd; i++) {
var noRowToAdd = i < count;
var row = noRowToAdd ?
table.rows[i] :
table.insertRow(i);
var low = noRowToAdd ? count : 0;
var high = noRowToAdd ? toAdd: count + toAdd;
for(var k = 0; k < high; k++) {
var x = row.insertCell(low + k);
}
}
}
function del(toDel) {
var table = document.getElementById('table');
var count = table.getElementsByTagName("tr").length;
if(count - toDel < 3)
return;
for(var i = 0; i < toDel; i++) {
table.deleteRow(count - i - 1);
}
var newCount = count - toDel;
for(var i = 0; i < newCount; i++) {
for(var k = newCount + toDel; k > newCount; k--) {
table.rows[i].deleteCell(k - 1);
}
}
}
Пример