de nuevo, esta linea te esta dando problema
Cita: divprincipal.appendChild("div");
como ya te mencione,
appendChild requiere que el argumento sea un nodo, no un string. supongo que en tu caso tienes que poner la variable
hijoprincipal el cual contiene el elemento <div>.