En realidad
innerHTML es casi lo opuesto a usar DOM y no forma parte del estandar del W3C. Deberías usar
document.createTextNode en su lugar.
Código:
// Incorrecto
td.innerHTML = "Texto";
// Correcto
td.appendChild(document.createTextNode("Texto"));
El objeto Table cuenta con los métodos
deleteRow() e
insertRow() y a su vez el objeto TableRow cuenta con los métodos
deleteCell() e
insertCell(). Quizás resulten más sencillos de usar.