Newsgroup: it.comp.lang.javascript
Titolo: Perchè il document.write() si comporta come il document.clear()??????

Qualcuno si ricorda quando un po' di tempo fa ho postato un messaggio che
parlava di un document.write che "resettava" il documento se in questo era
presente un'applet???
Bene, ieri, facendo alcune prove (che con le applet non c'entrano
assolutamente niente, mi sono riimbattutto nello stesso identico problema.
Vi posto il codice in questione
<html>
<head>
<meta http-equiv="Content-Language" content="it">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>New Page 1</title>
</head>
<body>
<script language="JavaScript"><!--
function Inizializza(Frase)
{
 document.open()
 for (var i=1;i<=Frase.length;i++)
  document.write("<div id='t"+i+"'
style='position:absolute;top:50px;heigth:20px;width:20px;text-align:left;fon
t-family:Verdana;font-size:20pt'></div>");
 document.close()
}
file://--></script>
<form>
 <input type="button" name="o" value="Effetto"
onclick="Inizializza('prova')">
</form>
</body>
</html>
A me succede una cosa abbastanza strana. Quando clicco sul pulsante
"Effetto" (quando la funzione Inizializza() viene richiamata a scrivere gli
n <DIV>), mi sparisce tutto quello che ho nel documento, e, se guardo il
sorgente della pagina "cancellata" ottengo le seguenti righe
<div id='t1'
style='position:absolute;top:50px;heigth:20px;width:20px;text-align:left;fon
t-family:Verdana;font-size:20pt'></div><div id='t2'
style='position:absolute;top:50px;heigth:20px;width:20px;text-align:left;fon
t-family:Verdana;font-size:20pt'></div><div id='t3'
style='position:absolute;top:50px;heigth:20px;width:20px;text-align:left;fon
t-family:Verdana;font-size:20pt'></div><div id='t4'
style='position:absolute;top:50px;heigth:20px;width:20px;text-align:left;fon
t-family:Verdana;font-size:20pt'></div><div id='t5'
style='position:absolute;top:50px;heigth:20px;width:20px;text-align:left;fon
t-family:Verdana;font-size:20pt'></div>
E' come se il document.write() per qualche strano motivo richiamasse, prima
di scrivere i <DIV> il document.clear(), con gli ovvi effetti disastrosi.
Questo, ovviamente, è un problema, in quanto io devo scrivere i <DIV> a
seconda della lunghezza della frase, e li devo usare in un secondo momento
tramite script. Ma se dopo il document.write, sul sorgente ottengo SOLO il
codice dei <DIV>, quali script uso???????????????
Vi prego ditemi che non succede solo a me.......................
P.S. Utilizzo Internet Explorer 5...........
--
bye by Neo
webmaster de "la homepage di Neo"
http://web.tiscalinet.it/neowebpage

perchè, vai a scrivere su di un document già
creato e quindi lo ricrei..
se usi inseradiacenthtml riesci in quello che vuoi fare..
--
Bye
Ro<*¿*>berto

 wrote in message
news:7snh38$drc$1...@diesel.cu.mi.it...


ciao,
se scrivi nel documento mentre questo si
"compone", aggiungi quello che scrivi..
else
se scrivi in un documento già composto
cancelli quello che c'è e lo ricrei con
quello che scrivi..




Ciao,
io ti consiglio di scrivere in un layer invece
di scrivere nel documento stesso.
Con NS utilizzi il tag <LAYER> (il DIV necessita alcune modifiche)
e document.write();
con IE invece il metodo write() sembra effettuare
sempre il document.clear() prima di write(), ma con IE
puoi utilizzare tranquillamente il metodo innerHTML ed
un DIV qualsiasi.
Se ti puo' andar bene, ti mostro come si fa (nel caso
tu non conosca ancora questo metodo).
the RazoR EdgE

Sottoscrivo tutto quello che ha detto Ro<*¿*>berto, inoltre:
se chiami document.write() il documento verrà riscritto se è
già partita la funzione onload(), oppure se
document.readyState=="complete".
Alla fine dovresti chiamare anche document.close()
se invece document.readyState=="interactive", puoi mettere tutti i
document.write() che vuoi, e dopo non devi mettere document.close().
Questo secondo caso si verifica per esempio in situazioni del genere:
<body>
<script>
document.write("<A HREF=.....");
// Il documento non verrà sovrascritto, ma verrà solo aggiunta un'ancora.
</script>
</body>
<body>
<script>
setTimeout('document.write("<A HREF=.....");',5000);
// Tra 5 secondi il documento sarà già completato, quindi lo stesso verrà
sovrascritto.
</script>
</body>
CiaoooooooooooooooooooooooooooooooaiC.
                                      by
-------------------------------------------------------------------
          Ðarius. <- 
www.infotronica.it/darius
 ->
     - Art of JavaS.™ - 
www.probo.it/javascript/
-------------------------------------------------------------------

 wrote in message
news:7snrmc$rbd$1...@fe2.cs.interbusiness.it...


Ciao..
non credo tu riesca a trovare una soluzione diversa
e document.readyState è read only!
esiste però la possibilità di inserire anche nel tag script
con IE..
--
