View Full Version : [JS] Creare una variabile dinamicamente tramite Ciclo For
robertino_salemi
16-03-2014, 16:49
Salve a tutti,
come posso creare una variabile con nome dinamico grazie ad un ciclo for?
Avevo scritto:
for(i=0; i=pax; i++){
var paxDetailSurname '' + i = $("#ospiti_details_surname_"+i).val();
var paxDetailName '' + i = $("#ospiti_details_name_"+i).val();
}
ma da errore!
Grazie.
non è la prima volta che te lo dico, spero possa essere l'ultima anche perchè mi pare in uno dei tuoi post precedenti dicesti "comincerò ad usarlo".
http://jsfiddle.net/DWmVC/
premi JSHINT e vedi cosa ti dice, ci sono ovviamente degli errori.
prima di pensare a come fare quello che chiedi sarebbe cosa opportuna verificare il codice scritto almeno.
scusa l'acidità ho appena perso qualche game a league of legends e mi rende acido :D
robertino_salemi
16-03-2014, 23:46
Hai pienamente ragione! :D
L'ho modificato così: http://jsfiddle.net/DWmVC/9/
Credo che funzioni, domani lo testo direttamente sul mio modulo.
Grazie ancora.
robertino_salemi
17-03-2014, 18:58
Alla fine sto provando con un array bidimensionale, ma non va, mi da errore e non capisco il perchè!
ospiti = [];
for(i=0; i<pax; i++){
ospiti[i] = {};
alert($("#ospiti_details_surname_"+i).val());
ospiti[i].paxDetailSurname = $("#ospiti_details_surname_"+i).val();
alert($("#ospiti_details_name_"+i).val());
ospiti[i].paxDetailName = $("#ospiti_details_name_"+i).val();
}
console.log(ospiti[0].length); //stampa undefined
console.log(ospiti[1].length); //stampa undefined
for (x=0; x<ospiti[0].length; x++)
{
for (y=0; y<ospiti[1].length; y++)
{
console.log(ospiti[x][y]);
}
}
:muro:
jeremy.83
18-03-2014, 08:31
Ma fare 2 array?
var ar1=[];
var ar2=[];
for(var i=0;i<pax;i++){
ar1.push($("#ospiti_details_surname_"+i).val());
ar2.push($("#ospiti_details_name_"+i).val());
}
Poi vabè non so cosa devi fare
robertino_salemi
18-03-2014, 11:27
Ma fare 2 array?
var ar1=[];
var ar2=[];
for(var i=0;i<pax;i++){
ar1.push($("#ospiti_details_surname_"+i).val());
ar2.push($("#ospiti_details_name_"+i).val());
}
Poi vabè non so cosa devi fare
E' vero, a volte le strade più semplici sono le migliori!
Diciamo che alla fine ho risolto per altre strade, ma vorrei capire come fare per una prossima volta.
Daniels118
18-03-2014, 11:36
Prima di tutto l'array ospiti è popolato dal ciclo che conta da 0 a pax-1, quindi gli indici 0 e 1 sono definiti solo per pax>=2.
Secondo, l'istruzione
ospiti[i] = {};
non crea un array ma un oggetto; gli oggetti non hanno una proprietà predefinita length, che è una caratteristica degli array.
Se vuoi sfruttare la proprietà length devi creare un array, così:
ospiti[i] = [];
Però gli array non possono avere indici non numerici, quindi l'istruzione
ospiti[i].paxDetailSurname
non incrementerebbe il valore di length.
In alternativa puoi continuare a definire gli ospiti come oggetti, ma invece di utilizzare length per iterare sulle proprietà, utilizzi un ciclo for..in
robertino_salemi
19-03-2014, 10:26
Daniels, grazie per la soluzione proposta, ho risolto il problema!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.