Newsgroup: it.comp.lang.javascript
Titolo: cancellare e riscrivere sul documento

<script type="text/javascript">
document.write(12);
 
alert('cancello e riscrivo');
document.close();
document.clear();
document.open();
 
document.write(34);
</script>
 
in pratica il numero 12 dovrebbe essere cancellato, e al su posto deve 
comparire 34, invece compaiono entrami, cioč '1234'.
Dove sbaglio?

 comparire 34, invece compaiono entrami, cioè '1234'. Dove sbaglio?
 
Il document.close lo usi solo quando usi open, ossia quando lo 
scaricamento e visualizzazione della pagina è completato (quindi puoi 
toglierlo). Inoltre clear() è deprecated, ed è sottinteso quando fai un 
open su un document.
 
Prova a mettere lo stesso script (con un open() iniziale) onclick di un 
tasto...
 
https://developer.mozilla.org/en/DOM/document.open
 

 comparire 34,
 
No. Dato che lo script viene eseguito mentre un document stream è ancora
aperto (il browser sta "leggendo" la pagina in quel momento),
`document.open` non fa altro che riutilizzarlo. Diverso è se il il
document stream è terminato.
 
Il codice che intendi tu lo puoi ottenere con qualcosa del genere:
 
    <script>
        document.write("12");
        document.close();
 
        // Questo evento viene scatenato SOLO quando
        // la pagina ha finito di caricarsi. Quindi
        // il document stream è chiuso.
        window.onload = function() {
            document.write(34); // chiama implicitamente document.open
            document.close();
        }
    </script>
 
Nota che, comunque, `document.write` è un po' desueto e tranne rare
eccezioni non ne hai bisogno.

      </script>
 
e se volessi realizzare una sorta di contatore da 0 a 2, tipo questo
 
     <script>
         window.onload = function() {
for (i=0; i<3; i++) {
             document.write(i);
             document.close();
alert('pausa');
}        }
     </script>
 
 
lo script si ferma al primo ciclo...

 lo script si ferma al primo ciclo...
 
Perché distruggi il documento, e JavaScript fa parte del documento.
Come ti ho detto al giorno d'oggi non hai bisogno di `document.write`
utilizzi tutt'altro approccio, tipo le DOM API. Ad esempio:
 
    <html>
        <head>
            <script>
                window.onload = function () {
                    for (var i = 0; i < 3; i++) {
                        document.body.appendChild(
                            document.createTextNode(i)
                        );
                    }
                }
            </script>
        </head>
        <body></body>
    </html>
 

      </html>
 
aaaaaahhhhhhhh
Il numero precedente deve sparire!!!!!!!!!!!!!!
 
Cancellare e riscrivere
Cancellare e riscrivere
Cancellare e riscrivere
Cancellare e riscrivere
Cancellare e riscrivere
Cancellare e riscrivere
Cancellare e riscrivere
Cancellare e riscrivere
 
oohhhhisssaaaaaaaaaa

 oohhhhisssaaaaaaaaaa
 
Ammetto che mi sfugge la tua reazione.

 Ammetto che mi sfugge la tua reazione.
 
se avessi voluto ottenere un altro risultato avrei cambiato il soggetto 
(bisogna prima di tutto far riferimento a quello).
Visto che l'ho lasciato intatto dall'inizio della discussione ;)

 Visto che l'ho lasciato intatto dall'inizio della discussione ;)
 
Continuo a non afferrare il senso della reazione.
 
Comunque il codice che ti avevo scritto era per illustrarti il
funzionamento delle DOM API, e il caso "più complesso" era quello di
aggiungere il testo in coda. Una volta capita la strada da seguire
avresti potuto quantomeno tentare di buttare un occhio alle API e
riarrangiare il codice per i tuoi scopi. Il NG serve a questo.

 riarrangiare il codice per i tuoi scopi. Il NG serve a questo.
 
si lo so appena posso lo farò, purtroppo non pratico spesso java e mi 
serviva solo questa cosa.
grazie comunque

 grazie comunque
 
Di niente. Ricorda solo che, come disse il buon Larghi se ben ricordo,
java sta sta a javascript come cane sta a canestro: hanno in comune le
prime quattro lettere, ma sono due cose decisamente diverse.

 prime quattro lettere, ma sono due cose decisamente diverse.
 
OK