Newsgroup: it.comp.lang.javascript
Titolo: Riempimento dinamico liste (tag <SELECT>)

Salve a tutti!
Ho un problema con il riempimento dinamico delle list box/dropdown list
(tag <SELECT> x intenderci). Essendo, IMO, un interessante argomento, mi
sono permesso di postare integralmente l'HTML che ho scritto per fare le
dovute prove e cercare di isolare ed individuare il problema.
Al cambiare della selezione sulla prima list, si riempie dinamicamente
una seconda lista.
La funzione di riempimento - fill(oggetto,indice) - provvede ad azzerare
ogni item di questa lista in modo da pulirla e successivamente la
ripopola.
Il problema appare ripopolando la lista con un numero di items INFERIORE
alla lunghezza (dimensione è + corretto) che la lista aveva in
precedenza.
E' + complicato da spiegare che da individuare smanettando sul codice
seguente.
Se qualcuno trovasse l'inghippo... =)
--------------------begin HTML code--------------------
<HTML>
<HEAD>
<TITLE>Populating lists</TITLE>
<META name="author" content="Encelado">
<META name="generator" content="NoteTab Pro 4.6a">
<SCRIPT language="JavaScript">
<!--
function fill(obj,n) {
var dim = [55,5,3,4];
var lastDim = obj.length;
var i;
if(lastDim) {
  document.myform.debug.value+=(" / Deleting "+lastDim+" items from 0 to
"+(lastDim-1)+" / "); // (debugging code)
  for(i=0;i<lastDim;i++)
    obj.options[i]=null;   // for both IE & NN; use
obj.options.remove(i) for IE only
  }
document.myform.debug.value+=("Adding "+dim[n]+" items from 0 to
"+(dim[n]-1)); // (debugging code)
for(i=0;i<dim[n];i++)
  obj.options[i]=new Option(i+1);
obj.selectedIndex = obj.length-1;
document.myform.counter.value=obj.length; // (debugging code)
}
file://-->
</SCRIPT>
</HEAD>
<BODY onLoad="fill(myform.list,0)">
<FORM NAME="myform">
Populate list below with values from 1 to
<SELECT NAME="serie"
onChange="fill(myform.list,myform.serie.selectedIndex)">
  <OPTION>55 <OPTION>5 <OPTION>3 <OPTION>4
</SELECT>
<BR>Output:
<SELECT NAME="list"></SELECT>&nbsp;&nbsp;
Items:
<INPUT NAME="counter" TYPE="text" SIZE=2></INPUT>
(should be the no. selected above!)
<BR>Debugging display:<BR>
<TEXTAREA NAME="debug" ROWS=6 COLS=40></TEXTAREA>
</FORM>
</BODY>
</HTML>
---------------------end HTML code---------------------
Thanks&Regards,
Encelado
  ______ ___   _ ___  ___  ______________________________________
 / _____|   \ | |\  \/  / / E-mail:   eNnOcSePlAaMd!
o...@hotmail.com
|
( (--,__| |\ \| | )    ( (  Homepage: 
http://come.to/encelado
    |
 \______|_| \___|/__/\__\ \ ICQ UIN:  32255689                   |
.--------------------------'                                     |
|              Webmaster of LEGS WEAVER Unofficial Site          |
| 
http://www.geocities.com/enceleron/legs
 or 
http://surf.to/legs
 |
|              and of BRENDON D'ARKNESS Unofficial Site          |
|             
http://www.geocities.com/enceleron/brendon
         |
|________________________________________________________________|

Ciao,
prova con :
onLoad="fill(document.myform.list,0)
// netscape vuole dichiarazioni complete.
e
for(.....
    obj.options[i]=new Option(i+1,"valore",false,false);
obj.length=i;
//  definisci la lunghezza dell'elemento.
--
Bye
        Ro<*¿*>berto

Dai!  Quante personne hanno capito quello che hai scritto
a comp.lang.javascript ?  ;)
Questo e' stato la prima volta che ho mai letto un messaggio
italiano qui'!
mi spiace pero' non so la soluzione,  e' passato il argomento che
regola la lunghezza della lista?
ds
