Tiene razón lo que menciona caricatos, a medida que no pase la validación el mensaje de error se irá duplicando. Una opción es la que te señala caricatos, mantener el mensaje de error oculto, si no pasa la validación hacer visible ese mensaje.
Otra opción sería similar a la que estás utilizando, pero en vez de crear el mensaje de error como nodo de texto lo creas como un string, y lo insertas en la celda mediante la propiedad innerHTML. De esa manera el mensaje en dicha celda no se iría duplicando, sino que se iría reemplazando cada vez que se comete un error:
Código:
document.getElementById('elID').innerHTML = 'Mensaje de error';