|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1021
|
[JS] Creare una variabile dinamicamente tramite Ciclo For
Salve a tutti,
come posso creare una variabile con nome dinamico grazie ad un ciclo for? Avevo scritto: Codice:
for(i=0; i=pax; i++){
var paxDetailSurname '' + i = $("#ospiti_details_surname_"+i).val();
var paxDetailName '' + i = $("#ospiti_details_name_"+i).val();
}
Grazie. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2010
Città: Londra
Messaggi: 620
|
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 |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1021
|
Hai pienamente ragione!
L'ho modificato così: http://jsfiddle.net/DWmVC/9/ Credo che funzioni, domani lo testo direttamente sul mio modulo. Grazie ancora. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1021
|
Alla fine sto provando con un array bidimensionale, ma non va, mi da errore e non capisco il perchè!
Codice:
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]);
}
}
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: May 2007
Città: DiSaronno Originale
Messaggi: 2376
|
Ma fare 2 array?
Codice:
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());
}
__________________
Dell XPS 9570 Powered by Arch Linux || Motorola One Vision Ho concluso con raffaelev, Iceworld, stebru, Dichy, AXIP, Quakeman e Swampo |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1021
|
Quote:
Diciamo che alla fine ho risolto per altre strade, ma vorrei capire come fare per una prossima volta. |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jan 2014
Messaggi: 852
|
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].paxDetailSurnamenon 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 |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1021
|
Daniels, grazie per la soluzione proposta, ho risolto il problema!
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:31.




















