Non va quello che ti diceva br.

Tu crei un elemento che nel tuo javascript chiami p, e ok.

Poi però nelle altre funzioni lo usi come un elemento iterabile, cioè scansionabile con un ciclo for: non lo è.

Inoltre quando tu scrivi

for (c=0;c<p.length;c++){
var x=document.getElementById(c)

l'espressione non ha senso: c è un numero (infatti in partenza è: c=0), non un oggetto DOM (=html) per cui la funzione getElementById non fa nulla perchè deve operare su oggetti dom.

Certo, potrebbe essere che tu hai messo dei tag html con id numerici (brutta idea), ma credo piuttosto che si tratti invece di un errore concettuale visto che dici di essere alle prime armi.

Quello che nonti è chiaro è il concetto di tipo dati.
Una cosa sono i numeri.
Una altra gli oggetti html
Una altra le array

Inoltre, come ti diceva br, richiami p nelle altre funzioni dando per scontato che esse sappiano cosa è: ma non lo sanno.
Bisogna che studi ancora un paio di settimane di javascript perchè allo stato le tue idee sono ancora piuttosto confuse (non è una colpa sia chiaro!).
Comunque va bene anche fare esperimenti sbagliatissimi come questi - è sbagliando che si impara.