Foros del Web » Programando para Internet » Javascript »

Problema con función Eval - AYUDA!

Estas en el tema de Problema con función Eval - AYUDA! en el foro de Javascript en Foros del Web. Tengo el siguiente código: function Evaluar1(radioelegido, cont) { var z = cont; var obj = new Array(); // … y otras variables que se usan ...
  #1 (permalink)  
Antiguo 14/11/2002, 21:47
 
Fecha de Ingreso: abril-2002
Mensajes: 34
Antigüedad: 22 años
Puntos: 0
Pregunta Problema con función Eval - AYUDA!

Tengo el siguiente código:

function Evaluar1(radioelegido, cont) {
var z = cont;
var obj = new Array();
// … y otras variables que se usan más adelante

arreglo = radioelegido.split(",");

for (j=0; j<=z-1; j++) {
obj[j] = eval("document.form1." + arreglo[j]);
}

/* … y sigue aquí un código para ver si el usuario eligió o no algún elemento radio levantado por la función eval (que estoy seguro funciona correctamente puesto que lo he probado en otras oportunidades) */
}

Los elementos que estoy evaluando en el formulario son de tipo Radio. El código anterior me genera el error “Se esperaba “;”” en la línea coloreada en rojo. Es decir, no está realizando la función eval de cada grupo de radios (cada conjunto radio tiene 3 elementos). Otra cosa a tener en cuenta, y de allí que esté realizando el código de esta manera, es que cada conjunto radio de 3 elementos cada uno tiene un nombre propio, en este caso, un número de identificación correspondiente a un código de una base de datos. Además los conjuntos radios se generan dinámicamente en el formulario, dependiendo de las opciones que haya elegido el usuario. Un ejemplo: Si el usuario eligió 5 registros, se listarán 5 conjuntos de radios de 3 elementos de posible selección para cada uno de ellos. La función Javascript por lo tanto recibe como parámetros tanto la cantidad de registros listados, como así también una cadena de texto (radioelegido), en el cual están concatenados los nombres de cada conjunto de radios del formulario listado, y se ejecutará al presionar el botón Enviar el formulario, mostrando el mensaje de error “No se han realizado cambios” en caso el usuario no haya hecho clic en ninguna opción de los radios. Mi pregunta es: ¿Por qué me genera el error “Se esperaba “;”” como ya lo comenté? ¿Qué estoy haciendo mal en la función eval() para que reconozca a cada conjunto de radios? Un saludo.
  #2 (permalink)  
Antiguo 15/11/2002, 02:44
Avatar de Beakdan  
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 4 meses
Puntos: 7
Sebas22:
Según me parece, no hay error alguno en el modo en que haces el eval. Considera el siguiente código. Es una variación pequeña del tuyo para evaluar los objetos.

Código:
<script>
function evaluar1(radioelegido){
	var obj=new Array();
	arreglo=radioelegido.split(",");
	for(j=0; j<arreglo.length; j++){
		obj[j]=eval("document.form1." + arreglo[j]);
		alert(obj[j][0].name); 
	}
}
</script>
<body onload="evaluar1('hola,nada,test,sigue,pues')">
<form name=form1>
	<input type=radio name=hola>hola1
	<input type=radio name=hola>hola2
	<input type=radio name=hola>hola3
<br>
	<input type=radio name=nada>nada1
	<input type=radio name=nada>nada2
	<input type=radio name=nada>nada3
<br>
	<input type=radio name=test>test1
	<input type=radio name=test>test2
	<input type=radio name=test>test3
<br>
	<input type=radio name=sigue>sigue1
	<input type=radio name=sigue>sigue2
	<input type=radio name=sigue>sigue3
<br>
	<input type=radio name=pues>pues1
	<input type=radio name=pues>pues2
	<input type=radio name=pues>pues3
</form>
</body>
</html>
Si hubiese un error en el eval, el array obj tendría null o undefined en cada una de sus elementos. Pero como puedes ver, almacena correctamente una referencia a cada radio en el formulario, ya que puedo acceder a la propiedad name.
Creo que debes pegar el resto de tu código, para poder buscar el error. Aquí no está.
Saludos.
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:33.