Comunidad de diseño web y desarrollo en internet online

De cadena de texto a variable....

Citar            
MensajeEscrito el 13 Jul 2007 06:42 pm
Si, he buscado la solución en el foro pero nada...

A ver, para convertir una cadena de tecto en una variable tenemos este código:

Código :

variable1 = 55;
i = 1;
nombreVar = "variable"+i;
trace (this[nombreVar]);


Hasta ahí bien... Pero el siguiente código no me funciona:

Código :

hola.variable1 = 66;
i = 1;
nombreVar = "hola.variable"+i;
trace (this[nombreVar]);

Ayuda por favor... Estoy haciendo un código largo y me he quedado estancado por ahí :S:S:S:S

Gracias otra vez a todos los Clabrs

Por seitz

35 de clabLevel



 

Jack Bach

firefox
Citar            
MensajeEscrito el 13 Jul 2007 08:25 pm
Falla por las comillas.

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 13 Jul 2007 09:37 pm
¿

Código :

hola.variable1 = 66;
i = 1;
nombreVar = hola.variable+i;
trace (this[nombreVar]);
?

Undefined...

Por seitz

35 de clabLevel



 

Jack Bach

firefox
Citar            
MensajeEscrito el 14 Jul 2007 12:31 am
Si es forzoso ese formato de hola.variable1 tienes que usar hola como Objeto y la función eval en lugar de this. :wink:

Código :

var hola:Object = new Object();
hola.variable1 = 66;
i = 1;
nombreVar = "hola.variable"+i;
trace (eval(nombreVar)); //devuelve 66


Saludos

Por MDCLXVI

6 de clabLevel



Genero:Masculino  

México

firefox
Citar            
MensajeEscrito el 14 Jul 2007 03:04 am
El eval no es necesario.

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 14 Jul 2007 03:17 am
Sin eval devuelve "hola.variable1" y no el valor de la variable 66, o al menos a mi me sale así en AS2.

Código :

trace (nombreVar); //devuelve hola.variable1
// o te refieres a que ponga
trace (hola.variable1); //devuelve 66


Porque creo que quiere poner varias variables y sacar el valor al asignar el nombre de la variable a nombreVar, por ejemplo con un for o no?
Porque sino no hace falta eval, pues ya sabe el nombre de la variable.

Saludos

Por MDCLXVI

6 de clabLevel



Genero:Masculino  

México

firefox
Citar            
MensajeEscrito el 14 Jul 2007 03:22 am
Me refiero a ésto:

Código :

var hola:Object = new Object();
hola.variable1 = 66;
i = 1;
nombreVar = hola.variable1 + i;
trace (nombreVar); //devuelve 67
Por eso decía de sacar las comillas.

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 14 Jul 2007 04:07 am
Ah, ok.

Pero supongo que lo que quiere hacer es algo así, o por si acaso lo pongo.

Código :

//Creo que quería hacer algo así
var hola:Object = new Object();
hola.variable1 = 66;
hola.variable2 = "test";
hola.variable3 = "otros datos";

//sacar los valores así, pero tiene que saber cuántas variables hay
for (i=1; i<=3; i++) {
   nombreVar = "hola.variable"+i;
   trace(eval(nombreVar));
}


Código :

//O mejor aún, yo suelo usar Arrays asociativos
var Hola:Array = new Array({Var:66},{Var:"test"});

// e incluso se puede agregar otros datos
Hola.push({Var:"otros datos"});
Hola.push({Var:"error"});

// o así, si se sabe qué index usar (o para sustituir uno que ya está registrado)
Hola[3] = {Var:"corrección"};
Hola[4] = {Var:"mas datos"};

// y sacar los valores así
for (i=0; i<Hola.length; i++) {
   nombreVar = Hola[i].Var;
   trace(nombreVar);
}


Incluso se puede usar otros valores, var Hola:Array = new Array({Var:66, texto:"hola"},{Var:"test", texto:"mundo"}); y sacarlo al pedir Hola[i].texto; en lugar de .Var, etc...

Saludos

Por MDCLXVI

6 de clabLevel



Genero:Masculino  

México

firefox
Citar            
MensajeEscrito el 15 Jul 2007 04:31 pm
Reitero, el eval no hace falta!

Hace años que uso AS y nunca lo necesité. Claro, que no por esto descarto que tenga alguna utilidad, pero en los casos puntuales a los que te referís no hace falta.

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.