Ciao a tutti, dunque guardando la pillola di Var
codice:
funzione 2: tag select dinamico (contenuto di un tag select relativo alla selezione fatta in un altro tag select) 

descrizione: avendo due tag select, questa funzione associa il contenuto del secondo tag select alla selezione effettuata nel primo. 

prima di tutto andiamo a creare un array di oggetti, in pratica l'insieme degli elementi che potrebbero comparire nel menu a contenuto dinamico: 


code:--------------------------------------------------------------------------------
var elementi = new Array(
{text:"Repubblica", value:"http://www.repubblica.it", indicatore:"it"},
{text:"HTML.it", value:"http://www.html.it", indicatore:"it"},
{text:"Rai", value:"http://www.rai.it", indicatore:"it"},
{text:"CNN", value:"http://www.cnn.com", indicatore:"en"},
{text:"Nasa", value:"http://www.nasa.gov", indicatore:"en"}
);
--------------------------------------------------------------------------------


come vedete, ogni elementi dell'array è una terna che presenta, rispettivamente, il text dell'elemento, il relativo value e un indicatore, identico quest'ultimo al value di un elemento nel primo menu. 

ecco qui la funzione che si occupa del popolamento del secondo menu: 


code:--------------------------------------------------------------------------------
function travasa(dove, valore) {
 var k=0;
 for (j=0; j<elementi.length; j++)
  if (elementi[j].indicatore==valore) {
   dove.options[k]=new Option(elementi[j].text, elementi[j].value);
   k++
  }
 dove.options.length=k;  
}
--------------------------------------------------------------------------------


in pratica la funzione scandisce tutto l'array elementi e, per ogni elemento, verifica che ci sia una corrispondenza fra l'indicatore e il parametro "valore" della funzione, che rappresenta il value dell'elemento selezionato nel primo menu. 
da notare che un elemento del menu viene creato con questa sintassi: 


code:--------------------------------------------------------------------------------
menu.options[i]=new Option("HTML.it", "http://www.html.it");
--------------------------------------------------------------------------------


alla fine della funzione, viene impostata anche la lunghezza dell'array option associato al secondo menu: tale lunghezza (ossia il numero di elementi del menu) non è altro che il valore del contatore k. 

la chiamata della funzione è la seguente: 


code:--------------------------------------------------------------------------------
<select name="s1" id="s1" onChange="travasa(this.form.s2, this.options[this.selectedIndex].value);">
 <option value="it">Siti italiani</option>
 <option value="en">Siti inglesi</option>
</select>
--------------------------------------------------------------------------------


il tutto è dunque: 


code:--------------------------------------------------------------------------------
<script language="JavaScript">
<!--
var elementi = new Array(
{text:"Repubblica", value:"http://www.repubblica.it", indicatore:"it"},
{text:"HTML.it", value:"http://www.html.it", indicatore:"it"},
{text:"Rai", value:"http://www.rai.it", indicatore:"it"},
{text:"CNN", value:"http://www.cnn.com", indicatore:"en"},
{text:"Nasa", value:"http://www.nasa.gov", indicatore:"en"}
);

function travasa(dove, valore) {
 var k=0;
 for (j=0; j<elementi.length; j++)
  if (elementi[j].indicatore==valore) {
   dove.options[k]=new Option(elementi[j].text, elementi[j].value);
   k++
  }
 dove.options.length=k;  
}
//-->
</script>
Questa mi permette di fare due select dipendenti l'una dall'altra, ma è possibile farne tre dipendenti ?
Ci sto provando ma non mi funziona, mi è venuto addirittura il dubbioche non si possa fare !!!!