Newsgroup: it.comp.lang.javascript
Titolo: Dove sbaglio?

Ciao a tutti,
Dopo aver definito un form con due select A e B, ho sviluppato questa
function:
var update = new Array("1", "2", "3", "4", "5", "6");
function DestSelect(origSelect, destSelect, destSelectList) {
  origSelectValue =
eval(origSelect.options[eval(origSelect.selectedIndex)].value);
  destSelect.length = 0;
  if (origSelectValue == 0) {
       destSelect.length = 1;
       destSelect.options[0] = new Option(eval(0));
       destSelect.options[0].value = 0;
  } else {
     for (i=0; i<destSelectList.length; i++) {
      destSelect.length +=1;
      destSelect.options[destSelect.length-1] = new
Option(eval(destSelectList[i]));
      destSelect.options[destSelect.length-1].value = destSelectList[i];
     }
  }
}
La quale, se l'utente imposta il valore 0 dalla select A, la funzione
imposta nella select B il valore 0 mentre se imposta un qualsiasi altro
valore dalla select A, la funzione carica nella select B i valori definiti
nell'array "update".
Premetto che nel form richiamo la funzione tramite l'evento "onchange" ed il
richiamo alla funzione in fase di inizializzazione viene fatta anche sul
body mediante "onload". Per completezza, riporto la riga del body:
<body onLoad="DestSelect(document.form1.web, document.form1.update,
update)">
e quindi il codice relativo al form:
  <form name='form1' method='post' action=''>
  <p><strong>
    <select name="web" size="1" id="web"
onchange="DestSelect(document.form1.web, document.form1.update, update)">
      <option value="0">0</option>
      <option value="1" selected>1</option>
    </select>
    &lt;-- Select 1</strong></p>
  <p><strong>
    <select name="update" size="1" id="update"></select>
    &lt;-- Select 2</strong></p>
</form>
Inzialmente la select B viene caricata correttamente; quando seleziono dalla
select A il valore 0, la select B assume il valore 0 come previsto.
Quando invece seleziono un valore diverso da 0, la select B anzichè
ricaricare i valori dell'array "update" si presenta come vuota e non capisco
il motivo. Qualcuno potrebbe per cortesia vedere dove sta l'errore?
Ringrazio anticipatamente per l'aiuto.
-- 
------------------------------------
BlueWare di Impastato Marcello
 [web] 
http://www.blueware.it
 [msn] 
coo...@blueware.it
 [icq] 146781935
 [Irc] 
http://www.italchat.it

 ha scritto nel messaggio
news:XIxLa.156959$pR3.3...@news1.tin.it...

Premetto che non sono un esperto, ma credo si formi una specie di conflitto
di
nomi, per cui prova a modificare le seguenti linee:
<body onLoad="DestSelect(document.form1.web,
document.form1.select2,update)">
<select name="web" size="1" id="web"
onchange="DestSelect(document.form1.web, document.form1.select2, update)">
<select name="select2" size="1" id="select2"></select>
Così dovrebbe funzionare.
Il problema penso dipenda dal fatto che nella chiamata alla funzione
contenuta nel form viene passato un riferimento all'array update, ma nel
form il nome update si riferisce anche alla seconda select, per cui forse
viene passata questa, che naturalmente è vuota.
Ciao.
Giulio.


Grazie mille, adesso funziona, ti confesso che mi era sfuggito questo
particolare, anche perchč non me lo segnalava come errore (quando invece...
avrebbe dovuto esserlo... essendo le due "update" ti tipo diverso.
Cooper.
