Je veranderd de background color en direct daarna roep je een prompt op. Prompt werkt blokkerend, dat wil zeggen dat het alle uitvoer blokkeert, inclusief het opnieuw tekenen van de pagina.
Hierdoor heeft de browser niet genoeg tijd om de achtergrondkleur te updaten en opnieuw te tekenen waardoor je het resultaat pas ziet als de prompt is gesloten.
Je kan de prompt iets vertragen door het zo te doen:
document.getElementsByTagName("Body")[0].style.background="green";
setTimeout(function() {
newHS = prompt("Wat is je naam?", "JanR");
}, 1);
Hiermee vertraag de prompt() 1 milliseconde, dat zou precies genoeg tijd moeten zijn om de achtergrond opnieuw te tekenen.
Nu ben ik niet zo gecharmeerd van overal maar een kleine timeout op zetten maar ik kan even niets bedenken wat met prompt() werkt en het opnieuw tekenen op een nettere manier afvangt in "vanilla" javascript.
Editje: Je moet hiermee ook rekening houden met de scope van de variabele newHS, die bestaat alleen binnen de anonieme functie in setTimeout. Een van de redenen waarom ik dit geen mooie oplossing vind.