Comunidad de diseño web y desarrollo en internet online

Cómo acceder a los valores de los elementos de un Array?

Citar            
MensajeEscrito el 24 Jul 2007 12:19 pm
Hola Foro ...
Tengo un problema, tengo que acceder a los valores de los elementos dentro de un Array bidimensional.
Le paso a explicar que es lo que estoy haciendo. Estoy desarrollando un sistema en GeneXus 9 para Web y se ha embebido dentro de dicho lenguaje; Ajax y JavaScript para mejorar la interactividad del lado del Cliente (un mejor tiempo de respuesta), puesto que Genexus solo no cuenta con esta posibilidad.
Tengo en dicho sistema un Browser donde existen variadad de objetos y muchos controles, como por ejemplo despliegue de imágenes mensajes de advertencia, ect. Estos eventos responden a el cambio de cada uno de los objetos, dichos objetos son Campos de texto, Radio Buttons, etc.
El sistema tiene embebida varias funciones que controlan por ejemplo en Evento Click o el Evento Change ya sea de un Radio o un campo Edit. Como así también funciones que parsean una fecha, que reconocen el tipo de navegador donde esta trabajando el Cliente. Como también una función para cargar la página que creo que ya han oido hablar de la función LlamarAsincrono().
Pero vamos al grano o problema que tengo ...
En cierto lugar da la página tengo embebido lo siguiente ... (por cuestión de no confundir voy a mostrar solo el código JS y cómo está planteado) ....
<script language='JavaScript' type='text/javascript'>
// son tres Radio Buttons de dos valores cada uno
// 1 = SI y 2 = NO ...
var control1 = document.getElementsByName(nombrecontrol1.InternalName);
var control2 = document.getElementsByName(nombrecontrol2.InternalName);
var control3 = document.getElementsByName(nombrecontrol3.InternalName);

// luego declaro de un Array bidimensional ...
var controles3 = new Array(Array(control1[ 0 ],'false'), Array(control1[ 1 ],'false'), Array(control2[ 0 ],'false'), Array(control2[ 1 ],'false'), Array(control3[ 0 ],'false'), Array(control3[ 1 ],'false'));

// después lo que hago es controlar con una función cual de los radio cambió su estado ...
AsignarEventoChange(control1[ 0 ],'LlamarAsincrono(" '+(Ajax)+' ",controles3,"Mensaje");'
AsignarEventoChange(control1[ 1 ],'LlamarAsincrono(" '+(Ajax)+' ",controles3,"Mensaje");'
AsignarEventoChange(control2[ 0 ],'LlamarAsincrono(" '+(Ajax)+' ",controles3,"Mensaje");'
AsignarEventoChange(control2[ 1 ],'LlamarAsincrono(" '+(Ajax)+' ",controles3,"Mensaje");'
AsignarEventoChange(control3[ 0 ],'LlamarAsincrono(" '+(Ajax)+' ",controles3,"Mensaje");'
AsignarEventoChange(control3[ 1 ],'LlamarAsincrono(" '+(Ajax)+' ",controles3,"Mensaje");'
AsignarEventoChange(control1[ 0 ],'LlamarAsincrono(" '+(Ajax)+' ",controles3,"Mensaje");'
</script>
Cual es el problema ?¡?¡?¡ ....
Es que por más que quiero cambiar los valores de los radio buttons; o sea los click de cada uno;
no obtengo el resultado esperado los valores son simpre los mismos ... entonces ...
Cómo o de qué manera puedo acceder a los valores de cada Radio Button para obtener el "valor en cada change" y que me muestre en este caso de acuerdo a la convinación determinada la respuesta que deseo ????
Espero haber sido bien explayado y que se ma hayan entendido ... si no es así por favor avisarme en seguida y daré una explicación más detallada ...
Muchas Gracias.
Pablo

Por pablodante

1 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 26 Jul 2007 03:39 am
El estado para cada radio button está dado por el valor checked="checked"

<form name="form1" id="form1" method="post" action="">
<input name="nombrecontrol1.InternalName" type="radio" value="esElRadio1" checked="checked" />
<input name="nombrecontrol2.InternalName" type="radio" value="esElRadio2" />
<input name="nombrecontrol3.InternalName" type="radio" value="esElRadio3" />
</form>

Sólo un radio button puede estar checked="checked", y pueden estar todos sin checkear al inicio.

Tal vez prefieras usar "checkbox" que se pueden checkear y descheckear en forma independiente.

Espero que te sirva.

Por gonarin

32 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 Jul 2007 11:46 am
Hola que tal... es un gusto...
Muchas gracias por la respuesta y sí aplique el "chequed" y recorriendo con un "for..." dicho radio pregunto por si está chequeado ...
El problema fue no conocer bien como trabaja JavaScript con array bidimensionales, (Matrices); es por eso que accedia de forma incorrecta a los valores de cada radio button .... en pocas palabras no sé nada de JavaScript y su forma de recorrer o armar Array multidimensional, después en un viejo tutorial de dicho lenguage encontré información sobre vectores y me dí cuenta de como lo tenía que encarar la asunto, eso porque descubrí que JS a los Array de Array hay que construirlos.
En este pequeño HTML en donde embebo JS pude darme cuenta de como encarar el problema...
... (esto me ayudó a resolver el evento que controlo en GeneXus con JS embebido, que por supuesto es mucho más complejo lo que tenía que resolver, si desea le puedo pasar el ".js", y de como logré resolver el problema, avíseme) ....
Aca va el código ....
<html>
<head>
<title>radio</title>
</head>
<script language=Javascript>
var control;
var control2;
var ArrControles;
function check(){
var indice;
var indice2;
control = document.getElementsByName('radio1');
control2 = document.getElementsByName('radio2');
var ctrlRadio1;
var ctrlRadio2;
for(indice = 0;indice < control.length; indice++){
if(control[indice].checked){
ctrlRadio1 = control[indice];
alert("Variable control 1 es :"+control[indice].value);
break;
}
}
for(indice2 = 0;indice2 < control2.length; indice2++){
if(control2[indice2].checked){
ctrlRadio2 = control2[indice2];
alert("Variable control 2 es :"+control2[indice2].value);
break;
}
}
parametros=new Array(Array(ctrlRadio1,"false"),Array(ctrlRadio2,"false"));
for (nuevoIndice=0;nuevoIndice<parametros.length;nuevoIndice++){
alert("Valor Control "+parametros[nuevoIndice][0].value);
}

}
</script>
<body>
<form name="formulario">
<font size=2>Control 1</font>
<input type="radio" name="radio1" value=1>No
<input type="radio" name="radio1" value=2>Si
<br>
<font size=2>Control 2</font>
<input type="radio" name="radio2" value=3>No
<input type="radio" name="radio2" value=4>Si
<br>
<input type="button" value="Aceptar" onclick="check();">
</form>

</body>

Por pablodante

1 de clabLevel



Genero:Masculino  

msie

 

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