Newsgroup: it.comp.lang.javascript
Titolo: Menù a tendina dinamici

Ho 3 menù a tendina che cambiano il loro contenuto a seconda di quello che
viene selezionato...
E' una semplice selezione di nazione -> regione -> città ma funziona solo
nazione -> regione e non regione -> città.. vi metto qua sotto la porzione
di codice interessata.. se mi ci date una controllata.... grazie
-------------------------
<font face="Verdana, Arial, sans-serif" size="-1"
color="#ff0000">Nazione:<select name="Stato"
onChange=ChangeDetail(this.form)>
<option value='0'>-- Seleziona --</option><option
value='1'>Italia</option></select></font><br>
<div id=newDetail1>
   <select name="Provincia" onChange=ChangeDetailX(this.form)>
   <option value='0'>-- Seleziona --</option>
   </select>
   </div>
<br>
<div id=newDetailX1>
   <select name="Localita">
   <option value='0'>-- Seleziona --</option>
   </select>
   </div>
<br>
<script language=javascript1.2>
IE = (document.all)?1:0;
NS = (document.layers)?1:0;
detail0='<option value=0>-- Seleziona --</option>';
detail1='<option value=1>Firenze</option><option value=2>Pisa</option>';
function ChangeDetail(pos) {
 pos = pos.Stato.options[pos.Stato.selectedIndex].value;
 temp = '<select name="Provincia">' + eval("detail" + pos) + '</select>';
 if(IE){ newDetail1.innerHTML=(temp)}
 else if(NS){
  document.newDetail1.document.write(temp)
  document.newDetail1.document.close()
  document.write("abcdef");
 }
}
detailX0='<option value=0>-- Seleziona --</option>';
detailX1='<option value=3>Certaldo</option><option
value=1>Empoli</option>';detailX2='<option value=2>Pontedera</option><option
value=4>San Romano</option>';function ChangeDetailX(pos) {
 pos = pos.Provicia.options[pos.Provincia.selectedIndex].value;
 temp = '<select name="Localita">' + eval("detailX" + pos) + '</select>';
 if(IE){ newDetailX1.innerHTML=(temp)}
 else if(NS){
  document.newDetailX1.document.write(temp)
  document.newDetailX1.document.close()
  document.write("abcdef");
 }
}
</script>

 di codice interessata.. se mi ci date una controllata.... grazie
Attenzione che un form non puo' essere spezzettato in piu' livelli (DIV 
anche se qui sembra funzionare e vorrei che qualcuno me la spiegasse 
'sta cosa! :-O ), rischi di non ritrovarti inviati i dati nella pagina 
di arrivo.
Ti consiglio di usare <p> invece di <div> per contenere le select 
successive.
Il codice che hai scritto comunque si corregge facilmente, anche se mi 
sembra una maniera abbastanza contorta di fare questo lavoro, ti 
consiglio di prendere spunto da questo script: 
http://www.jsdir.com/staffscripts/script048.asp
 duplicando la funzione 
che riempie la select con la stessa identica logica che hai gia' ideato 
finora.
Venendo agli errori:
Nella function changeDetailX hai scritto "provicia" invece di 
"provincia"
Nell'altra function hai dimenticato di riscrivere l'event-handler 
(onchange) nella select che definisci in "temp". Inoltre se non metti 
un'opzione "Scegli..." verra' subito visualizzata la prima opzione (nel 
tuo caso Firenze) che non potra' essere scelta (a meno di non 
sceglierene prima un'altra) e non scatterebbe l'onchange. Quindi ti 
basterebbe fare:
detail0='<option value=0>-- Seleziona --</option>';
detail1=detail0+'<option value=1>Firenze</option><option value=2>Pisa
</option>';
Inoltre elimina il pezzo (document.write()) per Netscape4, se i div non 
sono con posizionamento assoluto non puoi scriverci dentro.
Usa inoltre una sintassi giusta: 
document.getElementById("newDetail1").innerHTML=temp;
invece di newDetail1.innerHTML che e' tutt'altro che JavaScript e 
funzionera' solamente su IE.
-- 
Ciao, Riccardo
------------------------------------------------------------------------
http://www.jsdir.com
 ---- Bring Your Site To Life!!!!
------------------------------------------------------------------------
http://www.dev2dev.it
 - La rete ha connesso nuove particelle - D2D006
------------------------------------------------------------------------
Per rispondere: togli il PUNTO e metti un .

 'sta cosa! :-O )
Non ho visto il sorgente, ma un form PUO' essere benissimo 
"spezzettato" in piu' "livelli" come dici tu, basta che tutto 
l'ambaradan stia entro i tag inizio/fine.
Il problema nasce unicamente con NS4.x, e se "spezzetti" il form con 
layers ..quindi DIV/SPAN/etc con determinati stili e proprieta', o tag 
LAYER/ILAYER. Se usi DIV che non sono layer, non dovrebbero esserci 
problemi.
Come ben sai anche tu, il "problema" nasce dal fatto che NS4.x gestisce 
i LAYER come documenti separati.
-- 
C'ya,
ZER0
  :. job profile - coder.gfxer.webDesigner
"When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)