Foros del Web » Creando para Internet » Flash y Actionscript »

problema con eval()

Estas en el tema de problema con eval() en el foro de Flash y Actionscript en Foros del Web. Hola Tengo un problema. Quiciera cambiar la sentencia eval() por this[], Pero cuando lo hago el código no me varga las variables. Lo siguiente es ...
  #1 (permalink)  
Antiguo 16/07/2006, 13:57
 
Fecha de Ingreso: octubre-2004
Ubicación: En algún lugar de la República Oriental del Uruguay
Mensajes: 366
Antigüedad: 13 años, 1 mes
Puntos: 0
problema con eval()

Hola
Tengo un problema.
Quiciera cambiar la sentencia eval() por this[], Pero cuando lo hago el código no me varga las variables. Lo siguiente es el código con eval:

Código PHP:
if (success) {
   var 
mytotal=this.total;
   for (
i=0i<=mytotal-1i++) {
      
pic_arr.push(eval("this.foto" add i));                     
      
link_arr.push("noticias/vernoticia.php?notid="+eval("this.id_noticia" add i));
      
noticia_arr.push(eval("this.news" add i));
  }

Este es mi cambio, pero no me funciona:

Código PHP:
if (success) {
   var 
mytotal=this.total;
   for (
i=0i<=mytotal-1i++) {
      
pic_arr.push(this["this.foto" i]);                     
      
link_arr.push("noticias/vernoticia.php?notid="+this["this.id_noticia" +i]);
      
noticia_arr.push(this["this.news" +i]);
  }

gracias
__________________
ratamaster
  #2 (permalink)  
Antiguo 16/07/2006, 14:15
Avatar de eldervaz  
Fecha de Ingreso: agosto-2003
Ubicación: lima
Mensajes: 551
Antigüedad: 14 años, 4 meses
Puntos: 0
Código:
var pic_arr:Array = new Array();
var link_arr:Array = new Array();
var noticia_arr:Array = new Array();
mytotal = 20;
for (i=0; i<=mytotal-1; i++) {
	pic_arr.push(["this.foto"+i]);
	link_arr.push("noticias/vernoticia.php?notid="+["this.id_noticia"+i]);
	noticia_arr.push(["this.news"+i]);
}
trace(pic_arr);
__________________
eldervaz
www.eldervaz.com | www.ini4.com
  #3 (permalink)  
Antiguo 17/07/2006, 07:30
 
Fecha de Ingreso: octubre-2004
Ubicación: En algún lugar de la República Oriental del Uruguay
Mensajes: 366
Antigüedad: 13 años, 1 mes
Puntos: 0
Agradezco tu respuesta, pero no me ha funcionado. Por ejemplo, yo tengo un array donde sus índices (noticias), se van desplegando en un texto dinámico
Si hago esto:

noticia_arr.push(["this.news"+i]);


El texto dinámico despliega: this.news0
En cambio si uso:

noticia_arr.push(eval("this.news"+i));

El texto dinámico me despliega el valor del índice, lo que es lo correcto

Alguien sabe porqué esto?
Si quisiera no usar el eval()
__________________
ratamaster
  #4 (permalink)  
Antiguo 17/07/2006, 09:31
Avatar de eldervaz  
Fecha de Ingreso: agosto-2003
Ubicación: lima
Mensajes: 551
Antigüedad: 14 años, 4 meses
Puntos: 0
noticia_arr.push(["news"+i]);

con eso CONCATENAS la palabra NEWS y el valor e i

el resultado seria : news0 ... news1 ... news2 .... newsn

si quieres solo el indice:

noticia_arr.push([i]);
__________________
eldervaz
www.eldervaz.com | www.ini4.com
  #5 (permalink)  
Antiguo 17/07/2006, 09:35
 
Fecha de Ingreso: octubre-2004
Ubicación: En algún lugar de la República Oriental del Uruguay
Mensajes: 366
Antigüedad: 13 años, 1 mes
Puntos: 0
Tal vez no me expliqué bien:

Yo no quiero que el texto dinámico me muestre: news0, news1

Yo quiero que me muestre el VALOR de news0, news1, etc

newsN, son tomados de un archivo php. Estas variables las carga, porque cunado uso el eval(), veo los valores de estas variables pero de otra forma no. No quiero usar el eval porque hay veces que hace conflicto con el ie, porque esto (con eval), en el firefox me funciona pero en el ie no.

Gracias
__________________
ratamaster
  #6 (permalink)  
Antiguo 18/07/2006, 22:55
 
Fecha de Ingreso: enero-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 299
Antigüedad: 11 años, 11 meses
Puntos: 5
Buenas,

Para reemplazar los eval's con la notación de arrays (corchetes) seguí el siguiente modelo:

Código:
eval("this.variable"+i);
cambia por

Código:
this["variable"+i];
Con eso, debería funcionar (siempre y cuando la referencia de this sea correcta, pero si con eval el this está bien, con los corchetes va a andar);

La clave está en que lo que está adentro de los corchetes se evalúa, sin necesidad de usar la función eval.

Para que tengas en cuenta (te puede servir en otros casos):

Notación con puntos:

Código:
this.tipoNoticia  
// acá te referís a la variable tipoNoticia, dentro de this
Código:
var tipoNoticia = "policiales";
this[tipoNoticia];  
/** 
acá primero reemplaza la variable tipoNoticia por su valor, que es el string
"policiales", y después evalúa, por lo que termina siendo lo mismo que poner:
this.policiales.
Como lo que está entre corchetes es un string/cadena que se evalúa, ahí adentro podés 
concatenarle un contador como en tu ejemplo (o algún otro string o expresión que se puede
convertir a string
*/
En tu ejemplo, sería:

Código:
var mytotal = this.total;
for (i=0; i<=mytotal-1; i++) {
//	pic_arr.push(eval("this.foto" add i));
	pic_arr.push(this["foto"+i]);
//	link_arr.push("noticias/vernoticia.php?notid="+eval("this.id_noticia" add i));
	link_arr.push("noticias/vernoticia.php?notid="+this["id_noticia"+i]);
//	noticia_arr.push(eval("this.news" add i));
	noticia_arr.push(this["news"+i]);
}
Una observación: "add" en Flash 8 me tira error y hasta donde sé, está "depreciado", te convendría usar "+".


Suerte
Califa
  #7 (permalink)  
Antiguo 19/07/2006, 08:27
 
Fecha de Ingreso: octubre-2004
Ubicación: En algún lugar de la República Oriental del Uruguay
Mensajes: 366
Antigüedad: 13 años, 1 mes
Puntos: 0
Muchas gracias, ahora si funcionó :)
__________________
ratamaster
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:37.