Ciao, il problema è che il codice html (e non solo quello, in generale qualsiasi cosa) viene letto dall'alto verso il basso. Di conseguenza quell'istruzione viene eseguita prima ancora che il paragrafo con id="proviamo" sia stato letto e mostrato. Per cui il metodo getElementbyId("proviamo") cerca un elemento che ancora non esiste.
La soluzione, quindi, è quella di eseguire il codice
dopo che gli elementi sono stati caricati. Tipicamente si sfrutta l'evento "onLoad" del body, che viene richiamato quando quell'elemento è stato caricato completamente:
<html> <head> </head>
<body onload="myFunction();"> <!-- Chiamo la funzione nel momento giusto -->
<script type="text/javascript">
function myFunction() {
alert(document.getElementById("proviamo"));
}
myFunction(); // Chiamo la funzione troppo presto
</script>
<p id="proviamo">Testo precedente </p>
</body>
</html>