no encuentro el enlace entre el primer y segundo codigo. quiero decir, ¿el segundo codigo es la funcion
createchilds? si es asi, asumo que
elemento y
descripcion son los parametros de la funcion. es recomendable que siempre exponga el codigo un tanto mas completo de modo que se entienda la relacion de uno y el otro.
independientemente de ese detalle... basandome en el error que describes, donde cada iteracion representa un elemento erroneo, sucede porque hay ciertos tipos de objetos del DOM que son
activos.
activo quiere decir que la informacion contenida en el objeto va mutando a la vez que los nodos se van desplazando. o sea, si un elemento contiene 4 hijos, luego lo reubicas con appendChild, el objeto childNodes reporta 3 hijos aunque no se haya trabajado directamente sobre el objeto childNodes. a mi juicio, me parece que lo estas visualizando como un array. cuando usamos un elemento del array, el array no es alterado bajo ninguna circunstancia a no ser que se opere directamente sobre el array. con los objetos DOM es totalmente distinto, lo unico que se asemeja childNodes con los array es que los elementos son indexados.
la solucion a tu problema depende de lo que realmente estas intentando hacer. a mi parecer, quieres transferir todos los nodos de un elemento a unas celdas especifica de la tabla. en este caso, el bucle no puede ser controlado por un iterador secuencial como un numero incrementado de uno en uno. el control de bucle deberia ser la determinacion de si existe un nodo en dicho elemento. por ejemplo,
Código:
while(element.firstChild){ // el bucle continua mientras existe un primer hijo en el elemento;
// aqui invocas tus funciones o codigos;
}