La solución de GeekGirl está bien, pero esto no quiere decir que tu enfoque esté mal. Simplemente has tenido un despiste. Fíjate en la documentación de
appendChild. Dice que:
Cita: The returned value is the appended child.
Es decir, que appendChild devuelve el hijo insertado. Así que el valor asignado a la variable p_nuevo será el elemento textNode insertado. Por eso, te ocurre lo que dices ¿Cómo se puede solucionar? Haciendo las cosas paso por paso:
Código Javascript
:
Ver originalvar contenido = "nuevo parrafo";
// crea y asigna a p_nuevo el elemento párrafo que creas
var p_nuevo = document.createElement('p')
// inserta en p_nuevo el elemento textNode que creas
p_nuevo.appendChild(document.createTextNode(contenido));
// crea una variable datos donde asignar el div contenedor de parrafos
var datos = document.getElementById('datos')
// obten el primer parrafo
parrafo = datos.getElementsByTagName('p')[0];
// inserta el nuevo parrafo antes del primer parrafo
datos.insertBefore(p_nuevo,parrafo);
Un saludo!