Newsgroup: it.comp.lang.javascript
Titolo: Non funziona con Net 4.76

Ho manipolato un pò il codice per adattarlo alle mie esigenze... ma non
funziona... sembra che l'errore sia nella parte ciclica.
Se apro la pagina con explorer e poi da li vado a vedere il codice, è
esattamente come l'ho scritto,ma se faccio la stessa cosa con NN, al posto
del codice Js ci sono sei righe con il codice html per i 6 layers e basta!!!
AIUTO!!!
grazie k in anticipo!!!
Gionata Vatteroni
P.S. ecco il codice:
<html>
<script>
var ie = document.all?true:false; //-------------------------Controllo del
tipo di browser
var rec=3;controllo=0 //------------Rec è il numero di record dell'array
                                 //-------------Controllo è il record
mostrato
//-------------------------------------Traduzioni per prodotto HP
var hp=new Array();
hp[0]="HP in Italiano";
hp[1]="HP in Francese";
hp[2]="HP in Tedesco";
hp[3]="HP in Spagnolo";
var bf=new Array();
bf[0]="HP in Italiano";
bf[1]="HP in Francese";
bf[2]="HP in Tedesco";
bf[3]="HP in Spagnolo";
var bh=new Array();
bh[0]="HP in Italiano";
bh[1]="HP in Francese";
bh[2]="HP in Tedesco";
bh[3]="HP in Spagnolo";
var bp=new Array();
bp[0]="HP in Italiano";
bp[1]="HP in Francese";
bp[2]="HP in Tedesco";
bp[3]="HP in Spagnolo";
var bc=new Array();
bc[0]="HP in Italiano";
bc[1]="HP in Francese";
bc[2]="HP in Tedesco";
bc[3]="HP in Spagnolo";
var ss=new Array();
ss[0]="SS in Italiano";
ss[1]="SS in Francese";
ss[2]="SS in Tedesco";
ss[3]="SS in Spagnolo";
var immagine=new Array();
immagine[0]="1.gif";
immagine[1]="2.gif";
immagine[2]="3.gif";
immagine[3]="4.gif";
//----------------------------------funzione x cambiare il contenuto dei
livelli in Explorer
function levie()
{
document.all.e1.innerHTML="<font color=\"blue\"
face=\"tahoma\">"+hp[controllo]+"</font>";
document.all.e2.innerHTML="<font color=\"blue\"
face=\"tahoma\">"+bf[controllo]+"</font>";
document.all.e3.innerHTML="<font color=\"blue\"
face=\"tahoma\">"+bh[controllo]+"</font>";
document.all.e4.innerHTML="<font color=\"blue\"
face=\"tahoma\">"+ss[controllo]+"</font>";
document.all.e5.innerHTML="<font color=\"blue\"
face=\"tahoma\">"+bc[controllo]+"</font>";
document.all.e6.innerHTML="<font color=\"blue\"
face=\"tahoma\">"+bp[controllo]+"</font>";
document.all.e7.innerHTML="<IMG SRC="+immagine[controllo]+">";
controllo==3?controllo=0:controllo++;
timer=setTimeout("levie()",500);
}
//-------------------------------------funzione che scrive i DIV per
Explorer
function xpl()
{
document.writeln("<div id=\"e1\"
style=\"position:absolute;left:86;top:80;\">1</div>");
document.writeln("<div id=\"e2\"
style=\"position:absolute;left:425;top:89;\">2</div>");
document.writeln("<div id=\"e3\"
style=\"position:absolute;left:84;top:191;\">3</div>");
document.writeln("<div id=\"e4\"
style=\"position:absolute;left:468;top:204;\">4</div>");
document.writeln("<div id=\"e5\"
style=\"position:absolute;left:85;top:305;\">5</div>");
document.writeln("<div id=\"e6\"
style=\"position:absolute;left:424;top:315;\">6</div>");
document.writeln("<div id=\"e7\"
style=\"position:absolute;left:313;top:120;\">immagine</div>");
levie();
}
//-------------------------------------funzione che scrive i Layer per
Netascape
function ntscp()
{
document.writeln("<LAYER NAME=\"n1\" position=\"absolute\" left=\"200\"
top=\"200\" width=\"200\" height=\"20\" visibility=\"show\"
CLIP=\"0,0,200,20\">1 </LAYER>");
document.writeln("<LAYER NAME=\"n2\" position=\"absolute\" left=\"300\"
top=\"100\" width=\"200\" height=\"20\" visibility=\"show\"
CLIP=\"0,0,200,20\">2 </LAYER>");
document.writeln("<LAYER NAME=\"n3\" position=\"absolute\" left=\"200\"
top=\"300\" width=\"200\" height=\"20\" visibility=\"show\"
CLIP=\"0,0,200,20\"> 3</LAYER>");
document.writeln("<LAYER NAME=\"n4\" position=\"absolute\" left=\"350\"
top=\"50\" width=\"200\" height=\"20\" visibility=\"show\"
CLIP=\"0,0,200,20\">4 </LAYER>");
document.writeln("<LAYER NAME=\"n5\" position=\"absolute\" left=\"100\"
top=\"200\" width=\"200\" height=\"20\" visibility=\"show\"
CLIP=\"0,0,200,20\">5 </LAYER>");
document.writeln("<LAYER NAME=\"n6\" position=\"absolute\" left=\"400\"
top=\"100\" width=\"200\" height=\"20\" visibility=\"show\"
CLIP=\"0,0,200,20\">6 </LAYER>");
levnn();
}
//----------------------------------funzione x cambiare il contenuto dei
livelli in Netscape
function levnn()
{
document.layer.n1.document.write("<font color=\"blue\"
face=\"tahoma\">"+hp[controllo]+"</font>");
document.layers.n2.document.write("<font color=\"blue\"
face=\"tahoma\">"+ss[controllo]+"</font>");
document.layers.n3.document.write("<IMG SRC="+immagine[controllo]+">");
controllo==3?controllo==0:controllo++;
timer=setTimeout("levnn()",500);
}
document.write("<body bgcolor=\"cyan\">");
document.write("<img src=\"1.gif\" width=\"1\" height=\"1\"><img
src=\"2.gif\" width=\"1\" height=\"1\"><img src=\"3.gif\" width=\"1\"
height=\"1\"><img src=\"4.gif\" width=\"1\" height=\"1\">");
(ie)?xpl():ntscp();
document.write("</body>");
//Codice originale di Riccardo Riccardi (it.comp.lang.javascript),
//modificato da Gionata Vatteroni
</script>
</body>
</html>

 AIUTO!!!
all'inizio dichiari una variabile "ie" per definire il browser..........
dov'è la usi?????
se non distingui il codice per IE e NN...il secondo si incasina....perchè và
a leggere document.all..
cmq (per la felicità di Riccardo che dice che sono innamorato di NS6:-))))))
devo segnalarti che manca la parte per NS6...ossia , và bene innerHTML , ma
accoppiato a document.getElementById per NN6.....
andreotta fabiano
 WebMªster ATI POWER s.n.c.
 
andr...@atipower.it
 
http://www.atipower.it
    -new-
 
http://www.aticommerce.com
 
http://www.afdsoftware.freeweb.org
 
http://www.jsdir.com

accoppiato a document.getElementById per NN6.....
Va bene, ma allora i vari Opera, Mosaic..etc etc dove li mettiamo?
E le vecchie versioni di Explorer?
E chi non supporta i Js?
Scusa ma per il momento NN6 deve aspettare ancora un po' (IMO)!!!
Gionata

 Scusa ma per il momento NN6 deve aspettare ancora un po' (IMO)!!!
Eh eh :-)))
-- 
Ciao, Riccardo
------------------------------------------------------------------------
WebMaster: ----> 
http://www.jsdir.com
 <---- (aka 
http://www.jspoint.it
)
------------------------------------------------------------------------
               Nessun traguardo è abbastanza lontano.
------------------------------------------------------------------------

 E chi non supporta i Js?
Io non parlo espressamente di NN6 o altre "ciofeche".......parlo del codice
per i nuovi browser compreso IE5.5 , cmq come ho giŕ detto , se nelle
prossime versioni di IE MS deciderŕ di non supportare piů document.all  come
del resto ha fatto NS con document.layers mi farň delle grasse
risate:-)))))) e del resto non mi sembra una gran mossa scrivere ancora del
codice escludendo nuovi browser ...pensate veramente che Netscape lasci NS6
cosě????? , prima di fine anno avranno giŕ sistemato parecchi problemi e
fatto tre -quattro versioni....quindi riscriverete le vostre pagine perchč
molti non useranno piů NS4.......č sempre stato cosě....
andreotta fabiano
 WebMŞster ATI POWER s.n.c.


 funziona... sembra che l'errore sia nella parte ciclica.
Un po' di errori di logica.
Prima ti riporto il codice funzionante sia sotto IE4 che NN4, dopo un po' di 
delucidazioni.
Per facilitarti la ricostruzione delle righe ho indentato le funzioni:
================================================================ Inizio ======
<html>
<HEAD>
<script>
<!--
var ie = document.all?true:false; //-------------------------Controllo del tipo 
di browser
var rec=3;controllo=0







//-------funzione x cambiare il contenuto dei livelli in Explorer (RIALLINEA)
function levie()
	{
	document.all.e1.innerHTML="<font color=\"blue\" 
face=\"tahoma\">"+hp[controllo]+"</font>";
	document.all.e2.innerHTML="<font color=\"blue\" 
face=\"tahoma\">"+bf[controllo]+"</font>";
	document.all.e3.innerHTML="<font color=\"blue\" 
face=\"tahoma\">"+bh[controllo]+"</font>";
	document.all.e4.innerHTML="<font color=\"blue\" 
face=\"tahoma\">"+ss[controllo]+"</font>";
	document.all.e5.innerHTML="<font color=\"blue\" 
face=\"tahoma\">"+bc[controllo]+"</font>";
	document.all.e6.innerHTML="<font color=\"blue\" 
face=\"tahoma\">"+bp[controllo]+"</font>";
	document.all.e7.innerHTML="<IMG SRC="+immagine[controllo]+">";
	controllo==3?controllo=0:controllo++;
	timer=setTimeout("levie()",500);
	}
//----------------------funzione che scrive i DIV per Explorer  (RIALLINEA)
function xpl()
	{
	document.writeln("<div id=\"e1\" 
style=\"position:absolute;left:86;top:80;\">1</div>");
	document.writeln("<div id=\"e2\" 
style=\"position:absolute;left:425;top:89;\">2</div>");
	document.writeln("<div id=\"e3\" 
style=\"position:absolute;left:84;top:191;\">3</div>");
	document.writeln("<div id=\"e4\" 
style=\"position:absolute;left:468;top:204;\">4</div>");
	document.writeln("<div id=\"e5\" 
style=\"position:absolute;left:85;top:305;\">5</div>");
	document.writeln("<div id=\"e6\" 
style=\"position:absolute;left:424;top:315;\">6</div>");
	document.writeln("<div id=\"e7\" 
style=\"position:absolute;left:313;top:120;\">immagine</div>");
	}
//--------funzione x cambiare il contenuto dei livelli in Netscape  (RIALLINEA)
function levnn()
	{
	document.layers.n1.document.write("<font color=\"blue\" 
face=\"tahoma\">"+hp[controllo]+"</font>");document.layers.n1.document.close();
	document.layers.n2.document.write("<font color=\"blue\" 
face=\"tahoma\">"+ss[controllo]+"</font>");document.layers.n2.document.close();
	document.layers.n3.document.write("<IMG 
SRC="+immagine[controllo]+">");document.layers.n3.document.close();
	controllo==3?controllo=0:controllo++;
	timer=setTimeout("levnn()",500);
	}
//-------------------funzione che scrive i Layer per Netascape  (RIALLINEA)
function ntscp()
	{
	document.writeln("<LAYER NAME=\"n1\" bgColor=\"#ff0000\" 
position=\"absolute\" left=\"200\" top=\"200\" width=\"200\" height=\"20\" 
visibility=\"show\" CLIP=\"0,0,200,20\">1 </LAYER>");
	document.writeln("<LAYER NAME=\"n2\" bgColor=\"#00ff00\" 
position=\"absolute\" left=\"300\" top=\"100\" width=\"200\" height=\"20\" 
visibility=\"show\" CLIP=\"0,0,200,20\">2 </LAYER>");
	document.writeln("<LAYER NAME=\"n3\" bgColor=\"#0000ff\" 
position=\"absolute\" left=\"200\" top=\"300\" width=\"200\" height=\"20\" 
visibility=\"show\" CLIP=\"0,0,200,20\"> 3</LAYER>");
	document.writeln("<LAYER NAME=\"n4\" bgColor=\"#00ffff\" 
position=\"absolute\" left=\"350\" top=\"50\" width=\"200\" height=\"20\" 
visibility=\"show\" CLIP=\"0,0,200,20\">4 </LAYER>");
	document.writeln("<LAYER NAME=\"n5\" bgColor=\"#ff00ff\" 
position=\"absolute\" left=\"100\" top=\"200\" width=\"200\" height=\"20\" 
visibility=\"show\" CLIP=\"0,0,200,20\">5 </LAYER>");
	document.writeln("<LAYER NAME=\"n6\" bgColor=\"#ffff00\" 
position=\"absolute\" left=\"400\" top=\"100\" width=\"200\" height=\"20\" 
visibility=\"show\" CLIP=\"0,0,200,20\">6 </LAYER>");
	}
//Codice originale di Riccardo Riccardi (it.comp.lang.javascript),
//modificato da Gionata Vatteroni
//-->
</script>
</HEAD>
<body bgcolor="cyan" onLoad="(ie)?levie():levnn()">
<img src="1.gif" width="100" height="100"><img src="2.gif" width="100" 
height="100"><img src="3.gif" width="100" height="100"><img src="4.gif" 
width="100" height="100">
<SCRIPT>
<!--
(ie)?xpl():ntscp();
//-->
</SCRIPT>
</body>
</html>
================================================================ Fine ======
Cosa ho cambiato.
Non è possibile modificare un layer se tutto il documento non è stato caricato.
Come facevi tu prima:
--> document.write del BODY 
--> chiamata delle funzioni 
--> inizio dei cicli 
--> chiusura del BODY
commettevi proprio quest'errore. Cioè cominciavi a lavorare sui layers prima 
che il BODY fosse chiuso.
Io l'ho modificato in questo modo:
--> scrittura del tag <BODY> e delle immagini con HTML
--> scrittura dei layers con javaScript DENTRO al body
--> chiusura body con </BODY>
Nota che dalle funzioni xpl() e ntscp() ho tolto le chiamate alle funzioni 
levie() e levnn() per evitare che i layer comincino a cambiare subito, qindi i 
layers vengono stampati e restano fermi li finché il doc non è caricato.....
.... nel BODY ho aggiunto un evento onLoad che chiama la giusta funzione di 
cambio layer secondo il browser: onLoad="(ie)?levie():levnn()"
In pratica comincio a ciclare nei layers quando il documento è caricato.
Questa è una regola che devi sempre tener presente.
Non so se ti ho indotto io nell'errore perché non trovo più il mex cui ti 
riferisci nella citazione.
Se è così scusami, ma ho cominciato a sbarellare con i layers da giusto due 
settimane! :-)
Due altre cose:
-- con NN i layers vengono trattati come se fossero dei documenti, quindi dopo 
il document.write ci vuole un document.close() per il rispettivo document, 
quindi ad esempio:
document.layers.layer1.document.write("pippo");
document.layers.layer1.document.close();
Un errore più banale ma peggiore per certi versi: nel primo 
document.layers.n1.document.writeln() avevi scritto "document.layer.n1...), 
senza la "s" di layers... :-)))
Hope this help.


Molte grazie... mediterň sui miei peccati!!! :-)