Foros del Web » Programando para Internet » Javascript »

leer campos como array

Estas en el tema de leer campos como array en el foro de Javascript en Foros del Web. Hola! Estoy intentando hacer algo nuevo para mi. Generalmente he creado scripts javascript demasiado simples, pero esto me supera. Ni siquiera sé cómo ponerle el ...
  #1 (permalink)  
Antiguo 01/07/2006, 16:15
Avatar de dplweb  
Fecha de Ingreso: enero-2002
Mensajes: 74
Antigüedad: 22 años, 4 meses
Puntos: 0
De acuerdo leer campos como array

Hola!
Estoy intentando hacer algo nuevo para mi.
Generalmente he creado scripts javascript demasiado simples, pero esto me supera. Ni siquiera sé cómo ponerle el título a este post.

Tengo un script PHP que crea una secuencia de INPUT TYPE =TEXT con NAME=teoria[0], donde el cero luego pasa a 1, 2. etc... hasta 36. Cada campo con valores diferentes, que son sacados de una base de datos para rellenar los campos.

Mi dilema ahora es poder leer con Javascript todos los campos, buscar los valores similares y contarlos, llevarlos a variables y hacer calculos con ellos.

Se trata de un recuento de asistencia a clases de una asignatura. Los valores posibles son ".", "X" y "J" (sin comillas). El script deberia leer cuantos valores similares de cada tipo existen y luego calcular por ejemplo qué porcentaje de asistencia tiene cada estudiante. Con un boton se hacen los calculos y se rellenan otros campos con los resultados para generar ciertas estadisticas. Esta ultima parte es facil pero lo complicado para mi es juntar los valores y luego discriminar.

Espero no estar pidiendoles demasiado y que me hayan entendido este enredo.
Saludos y gracias.



Estoy pensando en un ARRAY y recorrerlo con un FOR
__________________
...webmastereando por la vida...
  #2 (permalink)  
Antiguo 02/07/2006, 07:24
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 6 meses
Puntos: 4
hola, fijate si te sirve:

Cita:
<html>
<head>
<script>
function clasificar(){
z=0;
x=0;j=0;punto=0;
while(document.forms[0]['teoria('+z+')']){
if(document.forms[0]['teoria('+z+')'].value=="X"){
x++;
}else{
if(document.forms[0]['teoria('+z+')'].value=="J"){
j++;
}else{
punto++;
}
}
z++;
}
document.forms[0]['x'].value=x;
document.forms[0]['j'].value=j;
document.forms[0]['punto'].value=punto;
}
</script>
</head>
<body>
<form>
<input type="text" name="teoria(0)" value="X" size="2">
<input type="text" name="teoria(1)" value="J" size="2">
<input type="text" name="teoria(2)" value="X" size="2">
<input type="text" name="teoria(3)" value="." size="2">
<input type="text" name="teoria(4)" value="X" size="2">
<input type="text" name="teoria(5)" value="." size="2">
<input type="text" name="teoria(6)" value="X" size="2">
<input type="text" name="teoria(7)" value="J" size="2">
<input type="text" name="teoria(8)" value="." size="2">
<BR>
X=<input type="text" name="x" size="2">
J=<input type="text" name="j" size="2">
.=<input type="text" name="punto" size="2">
<BR>
<BR>
<input type="button" onClick="clasificar()" value="Clasificar">
</form>
</body>
</html>

habría otras formas, pero creo que esta e s una de las mas sencillas.

saludos
__________________
by Capitán Buscapina
.
  #3 (permalink)  
Antiguo 02/07/2006, 19:25
Avatar de dplweb  
Fecha de Ingreso: enero-2002
Mensajes: 74
Antigüedad: 22 años, 4 meses
Puntos: 0
Hola!!!!!!!!!!!
Pero... simplemente genial!!! Es justo lo que necesito.
Voy a analizarlo con calma para ver de qué se trata.
Es raro: en PHP puedo hacer muchas cosas y en Javascript me cuesta mucho.
De hecho encontré una solución alternativa al enviar los datos a PHP y hacer los cálculos con PHP posteriormente, pero tu solución la voy a implementar.
Muchas muchas gracias.
Saludos.
========

pero una duda...
los nombres de campo los escribes como "teoria(0)"... ¿¿no como "teoria[0]"??
¿funcionaria asi? Por que despues esos mismos campos los debo enviar a PHP y no sé si me los interprete bien como un array llamado "teoria".
Entendi como funciona y es realmente muy facil.
Gracias de nuevo.
__________________
...webmastereando por la vida...

Última edición por dplweb; 02/07/2006 a las 19:31
  #4 (permalink)  
Antiguo 02/07/2006, 19:41
Avatar de dplweb  
Fecha de Ingreso: enero-2002
Mensajes: 74
Antigüedad: 22 años, 4 meses
Puntos: 0
De acuerdo

Hola
Le hice una pequeña mejora..no sé si esté correcto en sintaxis, pero funciona.
Se debe a que si pongo "j" o "x" no me los cuenta y peor me los cuenta como si fueran ".", debido a que entran en el ultimo ELSE.

Código:
  while (document.forms[0]['teoria(' + z + ')']) {
    if (document.forms[0]['teoria(' + z + ')'].value == "X" || document.forms[0]['teoria(' + z + ')'].value == "x") x++;
    if (document.forms[0]['teoria(' + z + ')'].value == "J" || document.forms[0]['teoria(' + z + ')'].value == "j") j++;
    if (document.forms[0]['teoria(' + z + ')'].value == ".") punto++;
    z++;
  }
Tambien me doy cuenta sobre el uso de "forms[0][teoria]" para referirme al campo de texto... eso no lo sabía. Yo ponía "forms[0].teoria" y me daba error.


Gracias, "Cap.Buscapina"
__________________
...webmastereando por la vida...
  #5 (permalink)  
Antiguo 02/07/2006, 20:40
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 6 meses
Puntos: 4
me alegro de que funcione, por lo del cambiar teoria(0) a teoria[0] , no habría problemas, solo que además debes cambiarlo en el script.

saludos
__________________
by Capitán Buscapina
.
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 15:20.