Foros del Web » Programando para Internet » Javascript »

problema sencillo de eval (o talvez no sea necesario eval)

Estas en el tema de problema sencillo de eval (o talvez no sea necesario eval) en el foro de Javascript en Foros del Web. Hola Os planteo el siguiente problema: Tengo un html con las siguientes etiquetas <input type="text" name="cod_poblacion" onblur="ponerpoblacion();"/> <input type="text" name="name_poblacion" disabled/> El campo name_poblacion se ...
  #1 (permalink)  
Antiguo 26/09/2011, 04:56
 
Fecha de Ingreso: septiembre-2011
Mensajes: 73
Antigüedad: 12 años, 7 meses
Puntos: 0
Pregunta problema sencillo de eval (o talvez no sea necesario eval)

Hola

Os planteo el siguiente problema:

Tengo un html con las siguientes etiquetas


<input type="text" name="cod_poblacion" onblur="ponerpoblacion();"/>
<input type="text" name="name_poblacion" disabled/>

El campo name_poblacion se actualiza tras el onblur del anterior campo y muestra la población que le corresponde a partir de:

<script type='text/javascript'>

c01 = new Array("Barcelona")
c02 = new Array("Valencia")
c03 = new Array("Bilbao")
c04 = new Array("Madrid")
c05 = new Array("resto")


function ponerpoblacion()
{
formulario.name_poblacion.value = eval("c" +formulario.cod_poblacion.value)[0];

if(eval("c" +datform.cnae.value)[0] == undefined){
alert ("No ha indicado un codigo válido.")
}
}
</script>

El código me funciona excepto cuando uno no indica un código válido (la parte del IF).
Me gustaría que si uno indicara como código 06 (que no esta en la lista de los posibles). Saltára el alert indicando que no es un código correcto.

Bueno, si podéis indicarme algo...Gracias!
  #2 (permalink)  
Antiguo 26/09/2011, 04:59
 
Fecha de Ingreso: septiembre-2011
Mensajes: 73
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: problema sencillo de eval (o talvez no sea necesario eval)

disculparme, la linea del if en realidad la tengo como:

if(eval("c" +formulario.cod_poblacion.value)[0] == undefined){
  #3 (permalink)  
Antiguo 26/09/2011, 06:47
Avatar de Aijoona
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Buenos Aires
Mensajes: 779
Antigüedad: 12 años, 11 meses
Puntos: 343
Respuesta: problema sencillo de eval (o talvez no sea necesario eval)

No hace falta usar eval. Podes acceder a las propiedades de un objeto mediante la notación de corchetes ([]):

Código Javascript:
Ver original
  1. var
  2.     c01 = 'WAKA',
  3.     value = '01';
  4.  
  5. window['c' + value] ==  window.c01; // true
  6. window['c' + value] ==  c01; // true

---

Te recomendaría que apliques un poco de buenas prácticas.

1. Estás declarando las variables como globales implícitas (no usas var)
2. Estás declarando las variables como globales cuando podrías agruparlas en un objeto (namespace).
3. Los nombres de las variables son horribles y no dicen nada sobre su contenido (semantica).
4. Estás mal usando el eval.
__________________
blog | @aijoona
  #4 (permalink)  
Antiguo 26/09/2011, 08:25
 
Fecha de Ingreso: septiembre-2011
Mensajes: 73
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: problema sencillo de eval (o talvez no sea necesario eval)

Gracias Aijoona,

Tomo buena nota de todo lo que me indicas y voy a probar con el método que me propones.

Confío ir aprendiendo y no haceros daño a la vista con código tan feo como el que por ahora me sale.

Saludos.
  #5 (permalink)  
Antiguo 26/09/2011, 13:17
 
Fecha de Ingreso: septiembre-2011
Mensajes: 73
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: problema sencillo de eval (o talvez no sea necesario eval)

...el tema me esta haciendo sufrir, es lo que tiene la inexperiencia...
por ahora lo he arreglado con un try catch pero no he podido evitar el eval:

function ponerpoblacion()
{
try{
if(eval("c" +formulario.cod_poblacion.value)===undefined){
}
}catch(e){
e=e.description || e.message;
alert("Dato no correcto, intentelo de nuevo");
formulario.cod_poblacion.value="";
formulario.name_poblacion.value="";
formulario.cod_poblacion.focus();
}
formulario.name_poblacion.value = eval("c" +formulario.cod_poblacion.value)[0];
alert("Ha indicado un codigo correcto");


Bueno supongo que lioso pero igual alguien le sirve.
Saludos.
  #6 (permalink)  
Antiguo 26/09/2011, 13:31
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: problema sencillo de eval (o talvez no sea necesario eval)

¿Leíste algo del post de @Aijonaa?
Cita:
Iniciado por Aijonaa
No hace falta usar eval. Podes acceder a las propiedades de un objeto mediante la notación de corchetes ([]):
Código Javascript:
Ver original
  1. var
  2.  c01 = 'WAKA',
  3.  value = '01';
  4.  
  5. window['c' + value] == window.c01; // true
  6. window['c' + value] == c01; // true
No uses eval!
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #7 (permalink)  
Antiguo 27/09/2011, 03:48
 
Fecha de Ingreso: septiembre-2011
Mensajes: 73
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: problema sencillo de eval (o talvez no sea necesario eval)

pues si, lo leía pero no lo entiendo muy bien...si queréis darme alguna explicación adicional...de todas formas voy a seguir intentando entenderlo
saludos

Etiquetas: eval, funcion, html, sencillo
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 20:59.