L'oggetto document rappresenta la pagina visualizzata nel browser, se e' gia' stato incontrato il tag </body> il browser considera la pagina "chiusa", pertanto un successivo write() implicitamente la riapre (cancellandone il contenuto) e ci scrive sopra.

Se invece write() viene eseguito prima che la pagina venga chiusa, scrive accodando all'attuale contenuto.

Soluzione... dipende da cosa vuoi realizzare, ovvero: la tabella deve essere visualizzata subito o a seguito della pressione di un pulsante (o altro evento) ?

in questo caso e' sufficiente mettere lo script nel punto in cui vuio venga visualizzata la tabella, ma senza la function... esempio:

codice:
... qui tutta la parte della pagina che precede la tabella ...
<SCRIPT LANGUAGE="JavaScript" type="text/javascript"> 

document.write('<table width="50%" align="center" border>') 
for (i=1; i<=3; i++) { 
 document.write('<tr>') 
 for (j=1; j<=3; j++) { 
  document.write('<td class="normale" onmouseover="this.className=\'selezionata\';" onmouseout="this.className=\'normale\';">');
  document.write('<\/td>'); 
 } 
 document.write('<\/tr>') 
} 
document.write('<\/table>'); 
</script> 
... qui il resto della pagina ...
ricordati di quotare il messaggio per vedere il codice come l'ho digitato...

ciao