sucede que estas usando directamente la colección devuelta por el método getElementsByTagName, seguido tienes el método item y la propiedad innerHTML. por tanto, lo que guardas en la variable
p no es la colección, sino el contenido del primer elemento de la colección. primero debes almacenar la colección en la variable y luego iterar dicha variable.
Código:
// variable len - un numero que indica cuantos elementos P existen;
// variable content - donde iras almacenando el contenido extraido del elemento;
var p = document.getElementsByTagName("p"), content = "";
for(var i = 0, len = p.length; i < len; i++){
// resto del codigo;
}