Newsgroup: it.comp.lang.javascript
Titolo: Caricamento select con array di array

Ho una riga di una tabella con una serie di campi:
- 2 combolist
- 3 input type text
La prima select è caricata a mano.
Ora devo fare una funzione che, sull'onchange della stessa vengano
caricati, nella seconda select e negli input, i valori specificati in
un array di array.
L'array è questo:
----------------------------
			var myMenu = new Array();
			//Definisco le voci del menu'
			myMenu['fam_a'] = new Array(); //Prima categoria
			myMenu['fam_a']['value1'] = new Array();
			myMenu['fam_a']['value1']['nome'] = '[010.01] 10 Medio';
			myMenu['fam_a']['value1']['sconto'] = '10';
			myMenu['fam_a']['value1']['scontoPer'] = '4';
			myMenu['fam_a']['value2'] = new Array();
			myMenu['fam_a']['value2']['nome'] = '[010.03] 10 Super';
			myMenu['fam_a']['value2']['sconto'] = '7.50';
			myMenu['fam_a']['value2']['scontoPer'] = '6';
			myMenu['fam_a']['value3'] = new Array();
			myMenu['fam_a']['value3']['nome'] = '[010.02] 10 Grande ';
			myMenu['fam_a']['value3']['sconto'] = '10';
			myMenu['fam_a']['value3']['scontoPer'] = '7.26';
			myMenu['fam_a']['value4'] = new Array();
			myMenu['fam_a']['value4']['nome'] = '[010.07] 10 Extra';
			myMenu['fam_a']['value4']['sconto'] = '4';
			myMenu['fam_a']['value4']['scontoPer'] = '1.9';
			myMenu['fam_a']['value5'] = new Array();
			myMenu['fam_a']['value5']['nome'] = '[010.03] 10 Super';
			myMenu['fam_a']['value5']['sconto'] = '7.50';
			myMenu['fam_a']['value5']['scontoPer'] = '6';
			myMenu['fam_b'] = new Array(); //Prima categoria
			myMenu['fam_b']['value6'] = new Array();
			myMenu['fam_b']['value6']['nome'] = '[170.60] 7x5';
			myMenu['fam_b']['value6']['sconto'] = '12.6';
			myMenu['fam_b']['value6']['scontoPer'] = '14';
			myMenu['fam_b']['value2'] = new Array();
			myMenu['fam_b']['value2']['nome'] = '[170.70] 10x8';
			myMenu['fam_b']['value2']['sconto'] = '18';
			myMenu['fam_b']['value2']['scontoPer'] = '8';
			myMenu['fam_b']['value3'] = new Array();
			myMenu['fam_b']['value3']['nome'] = '[170.78] 10x25';
			myMenu['fam_b']['value3']['sconto'] = '16';
			myMenu['fam_b']['value3']['scontoPer'] = '25';
			myMenu['fam_c'] = new Array(); //Prima categoria
			myMenu['fam_c']['value1'] = new Array();
			myMenu['fam_c']['value1']['nome'] = '[100.69] Comfort x10';
			myMenu['fam_c']['value1']['sconto'] = '17.50';
			myMenu['fam_c']['value1']['scontoPer'] = '20';
----------------------------
In pratica 'nome' dev'essere il valore di un'option nella select,
mentre 'sconto' e 'scontoPer' sono i valori da inserire negli input.
Io ho provato a buttar giù un pò di codice, ma non mi funziona :(
La funzione viene richiamata all'onChange della prima select (e gli sti
passa il riferimento alla select stessa)
################################
			function LoadProducts(obj){
				var famiglie = obj; //Recupero la SELECT
				var prodotti = document.getElementById('selProdotti'); //Recupero
la seconda SELECT
				// Recupero la famiglia selezionata
				var fam = famiglie.options[famiglie.selectedIndex].value;
				//Azzero il contenuto della seconda select
				var j
				var i
				j = 0
				for (i = prodotti.length - 1; i >= 0; i--)
					prodotti.remove(i);
				//Controllo che sia stata selezionata una categoria valida
				if(fam.length != 0){
					//Popolo la seconda Select
					for(value in myMenu[fam]){
						j++;
						//Creo il nuovo elemento OPTION da aggiungere nella seconda
SELECT
						var NewOpt = document.createElement('option');
						NewOpt.value = j; // Imposto il valore
						NewOpt.text = myMenu[fam][value]['nome']; // Imposto il testo
			// @@ Alla riga precedente dà errore "myMenu[fam][value]['nome']
has no properties" @@
						var sconto = document.getElementById('sconto');
						var scontoPerc = document.getElementById('scontoPerc');
						sconto.value = myMenu[fam][value]['sconto'];
						scontoPerc.value = myMenu[fam][value]['scontoPer'];
						//Aggiungo l'elemento option
						try{
							prodotti.add(NewOpt, null); //Metodo Standard, non funziona con
IE
						}catch(e){
							prodotti.add(NewOpt); // Funziona solo con IE
						}
					}
				}
			}
################################
Purtroppo non mi funziona.... e non capisco perchè.
Mi sapete aiutare?
Correggendo il codice o usando anche tutt'altro algoritmo.
Grazie mille :)
Pictor

 Ho una riga di una tabella con una serie di campi:
[CUT]
sono di corsa, leggi comunque qua che trovi come aggiungere e rimuovere
elementi in una select:
 
http://www.criosoftware.it/default12.aspx
-- 
"Run rabbit run
 dig that hole, forget the sun
 and when at last the work is done
 don't sit down, it's time to dig another one"
									    P.F.

Ci dò un'occhiata.
Ad ogni modo ho scoperto che l'unico problema è il caricamento dei
valori specificato nell'array di array (di array ^_^).
Se metto valori statici funziona tutto.
Invece se provo ad usare i valori del mio array di array mi dà errore
dicendo che non ha propietà.
La pagina è questa:
http://www.4shared.com/file/6335590/69db8bf3/ImmissioneOrdini2.html
 La funzione incriminata è la LoadProducts. Pare che da dentro la
funzione non riesca ad accedere all'array di array (ho provato a fare
degli alert), mentre dall'esterno nessun problema.
Aiutatemi, vi prego!
Grazie,
Pictor

 
http://www.4shared.com/file/6335590/69db8bf3/ImmissioneOrdini2.html
io in questa pagina non vedo alcuna select...
-- 
"Voi abili a tenere sempre un piede qua e uno là
 avrete un avvenire certo in questo mondo qua
 però la dignità
 dove l'avete persa?"
									    V.R.

 io in questa pagina non vedo alcuna select...
Perchè quella pagina è di 
4shared.com
Poi dovresti scaricare il file della pagina (in fondo) ;)
Comunque ho risolto, grazie lo stesso :)