Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    Creare variabili dinamicamente

    Ciao a tutti.
    Mi trovo dinanzi ad un problema apparentemente semplice..ma al quale non riesco a venirne a capo. Il poche parole devo creare una variabiale con un nome diverso per ogni loop.
    Ad esempio:

    codice:
    for(c=0;c<array.length;c++){
    var nome = //CODICE;
    }
    Ho provato in questo modo ma non funziona:

    codice:
    for(c=0;c<array.length;c++){
    var nome+c = contenuto;
    }
    Come posso risolvere questo problema?
    Chiedo scusa per la perdita di tempo
    Vi ringrazio per l'attenzione.

    Marco

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    la prima che mi viene in mente

    codice:
    eval("var nome"+c+"="+contenuto);
    oppure

    codice:
    window["nome"+c] = contenuto;

  3. #3
    Ti spiego subito il mio problema..perchè non riesco a capire come fare.
    Dovrei creare delle variabili con diverso nome per ogni loop e dovrei farle diventare delle matrici..in questo modo:

    for(c=0;c<array.length;c++){
    var nome=[];
    }

    Non so come fare..il metodo che mi hai dato tu non so come funziona in quanto non so eval cosa richiama ne cm si utilizzi.
    Scusami. Puoi darmi una mano?

    Marco

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Eval trasforma la stringa racchiusa tra parentesi tonde in codice JavaScript.

    Dovrei creare delle variabili con diverso nome per ogni loop e dovrei farle diventare delle matrici..in questo modo:

    for(c=0;c<array.length;c++){
    var nome=[];
    }
    Non ho capito che intendi. Nell'esempio ad ogni ciclo definisci sempre lo stesso array, non capisco il senso.

  5. #5
    In poche paroile vorrei che per ogni lopp sia creata una variabile che diventi una matrice.
    tipo se il c è uguale a 0 creo la variabile nome0[] se è uguale a 1 creo nome1[].
    Non so se riesco a farmi comprenedere bene..so ke è un pò confusionario.

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660


    codice:
    for(c=0;c<10;c++){
    	eval("var nome"+c+"=[];");
    }
    codice:
    for(c=0;c<10;c++){
    window["nome"+c] = [];
    }

  7. #7
    codice:
    for(c=0;c<array.length;c++){
        eval("var nome"+c+"=new Array();");
    }

  8. #8
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Vi sconsiglio l'uso di eval, sembra una cosa stupida, ma crea un casino della madonna a livello di operazioni che deve compiere l'interprete (espansione dinamica dei numeri di riga, modifica dello scope, e cose del genere).

    Se ti sta bene che le variabili che devi creare dinamicamente siano globali, usa:

    codice:
    for (var c = 0; c < 10; c++){
    	window["nome" + c] = [];
    }
    Altrimenti crea un oggetto locale:

    codice:
    var oMioOggetto = {};
    for (var c = 0; c < 10; c++){
    	oMioOggetto["nome" + c] = [];
    }
    &hellip;ché è pure più facile rispetto ad eval ottenere in un secondo tempo le variabili create...

    codice:
    var sMessaggio = "L\'oggetto \"oMioOggetto\" contiene le seguenti chiavi:";
    for (var sChiave in oMioOggetto) {
    	sMessaggio += "\n" + sChiave + " = " + oMioOggetto[sChiave];
    }
    alert(sMessaggio);

  9. #9
    Una volta che viene creata la variabile nome0=[] come faccio a richiamarla in qualche altra parte dello script? Ad esempio:

    rip1=1;
    if(nome0[rip-1]=="colore_caratteri"){
    //CODICE

    Come dovrei fare? In questo modo?

    rip1=1;
    if(eval("var nome"+c)[rip-1]=="colore_caratteri"){
    //CODICE

    Si?
    Scusate, vi sto facendo uscire pazzi xD
    Lo stesso dilemma è per window, come detto nel post prima di questo.

  10. #10
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Continuo a sconsigliarti di usare eval. Comunque, sia che usi l'oggetto window per dichiarare variabili globali, sia che dichiari le variabili nel local scope attraverso l'uso di eval, per ottenerle devi fare come con una normale variabile!
    codice:
    alert(nome0[0]);
    Lo stesso dicasi nel caso in cui tu voglia creare un oggetto:
    codice:
    alert(oMioOggetto.nome0[0]);

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.