Newsgroup: it.comp.lang.javascript
Titolo: Far riferimento in una form in una pagina con layer

Ciao,
ho un problema che qui vi espongo:
Ho utilizzato i layer e i div per mantenere la compatibilità tra i
browser IE e NS.
<div id="layer1">
<layer name="layer1">
	LAYER UNO
</layer>
</div>
<div id="layer2">
<layer name="layer2">
	LAYER DUE
</layer>
</div>
Per far riferimento ad una form (e ad un suo campo) contenuta nel
layer numero 1 come si fa?
document.nomeform.nomecampo.value oppure
document.forms['nomeform'].nomecampo.value
non funziona in NS ma in IE si.
Grazie a tutti
-- 
          Davide Lakester
          ICQ: 40766105
          Now Playing: Baldur's Gate: Dark Alliance (PS2)
          Now Listening: Tool - Aenima, Afterhours - Quello che non c'è
          Devo trovare il tempo per: Shen Mue 2, The Story Of Thor 2, Majora's Mask

 non funziona in NS ma in IE si.
Questo perche' in NS4.x ogni layer viene visto come un documento a parte.
Ergo, dovrai fare una cosa del genere:
doc=document.layers?document.layers["layer1"].document:document;
e poi usi normalmente doc come se fosse un document, per referenziare gli
oggetti "ivi contenuti" (forms, images, etc).
--------------------------------
Inviato via 
http://usenet.libero.it

oggetti "ivi contenuti" (forms, images, etc).
Si grazie ho risolto in maniera analoga :)
Ora perň mi capita un altro problema.
In Netscape non mi fa vedere il layer quando decido di mostrarlo.
Ecco la mia pagina e la funzione:
	<script language="Javascript">
	//window.onerror=null;
	toshow="carica";
	tohide="total";
 
	if (navigator.appName == "Netscape") 
	{
		layerRef="document.";
		styleSwitch="";
	}
	else
	{
		layerRef="document.all['";
	 	styleSwitch="'].style";
	} 	
 
	function buttonclick(str)
	{	
		if (navigator.appName == "Netscape")
		{
document.total.document.forms['bilanci'].bottone.value=str;
		}
		else
		{
			document.forms['bilanci'].bottone.value=str;
		}
 
		//Scritta sulla barra di Windows
		window.status="Attendere calcolo in corso...";
		//Mostro la schermata di caricamento
eval(layerRef+tohide+styleSwitch+'.visibility="hidden"');
eval(layerRef+toshow+styleSwitch+'.visibility="visible"');		
		//Submit della form 
		if (navigator.appName == "Netscape")
		{
document.total.document.forms['bilanci'].submit();
		}
		else
		{
			document.bilanci.submit();
		}
	}
	</script>
Questa invece č la pagina:
<body>
<DIV ID="total" style="visibility:visible;">
<layer name="total" visibility="visible">
.......
</layer>
</div>
<DIV ID="carica" style="visibility:hidden;">
<layer name="carica" visibility="hidden" left="50" top="140">
Caricamento in corso
</layer>
</DIV>
</body>
La funzione viene richiamata quando premo un bottone contenuto nel
layer "total" che teoricamente dovrebbe nascondermi il layer (o il div
che poi č la stessa cosa) "total" e mostrarmi il layer "carica"
In IE funziona mentre in NS nascondi si il layer "total" ma al posto
di mostrarmi il layer "carica" mi mostra una pagina bianca..
Perchč?!?!
-- 
          Davide Lakester
          ICQ: 40766105
          Now Playing: Baldur's Gate: Dark Alliance (PS2)
          Now Listening: Tool - Aenima, Afterhours - Quello che non c'č


 Perchč?!?!
Prova ad usare "show/hide" nel caso di NS. Se il problema persiste, diamo
uno sguardo piu' accurato al codice.


ottimizzazione ;) )
Mmm ho risolto già problema grazie...
Era per via di un parametro della stile di un div che tra l'altro mi
ha portato ad un piccolo problema di visualizzazione in IE stavolta (e
te pareva..).
Il parametro era (o meglio è) position:absolute che settato come stile
nel layer che andavo a mostrare quando entravo nella funzione.
Non specificando questo parametro nello stile in Netscape funziona
tutto perfettamente mentre in IE la scritta "Caricamento in corso" mi
risulta ovviamente spostata tutta sotto (ovviamente perchè non ho
specificato che la posizione del layer "carica" non è assoluta)..
Ho provato allora a settare una variabile che inizializzo all'inizio
della pagina quando faccio il controllo del browser..
se il browser è IE:
DivCaricaStyle="visibility:hidden; left:50px; top:140px;
position:absolute;";
mentre se è NS:
DivCaricaStyle="visibility:hidden; left:50px; top:140px;";
che poi utilizzo quando dichiaro il div carica:
<div id="carica" style=&{DivCaricaStyle};%>
.
.
.
</div>
Il problema è che sembra che non prenda lo stile..sia in NS (anche è
superfluo) sia in IE (che non prendendo la posizione assoluto il layer
risulta tutto in basso)
-- 
          Davide Lakester
          ICQ: 40766105
          Now Playing: Baldur's Gate: Dark Alliance (PS2)
          Now Listening: Tool - Aenima, Afterhours - Quello che non c'è


 <div id="carica" style=&{DivCaricaStyle};%>
Sempre a complicarci la vita, eh :)
Cmq sia, che sintassi e' quella che hai usato? Hai fatto mix tra sintassi
ASP e una proprietaria di Netscape (se non erro).. :)
Ma suppongo che, a questo punto, avrai gia' risolto il problema :)


Ma suppongo che, a questo punto, avrai gia' risolto il problema :)
SI :)
Grazie lo stesso!
-- 
          Davide Lakester
          ICQ: 40766105
          Now Playing: Baldur's Gate: Dark Alliance (PS2)
          Now Listening: Tool - Aenima, Alkaline Trio - Goddamnit
