Foros del Web » Programando para Internet » Javascript »

Promedio en arrays

Estas en el tema de Promedio en arrays en el foro de Javascript en Foros del Web. Hola a todos tengo esta funcion para calcular promedio Código HTML: <script> function calcular_prom(f){ var val1 = parseInt(f.p1.value); var val2 = parseInt(f.p2.value); var val3 = ...
  #1 (permalink)  
Antiguo 29/05/2014, 17:55
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 13 años, 4 meses
Puntos: 12
Promedio en arrays

Hola a todos tengo esta funcion para calcular promedio


Código HTML:
<script>
function calcular_prom(f){
var val1 = parseInt(f.p1.value);
var val2 = parseInt(f.p2.value);
var val3 = parseInt(f.p3.value);
var val4 = parseInt(f.p4.value);

//Calculo del Promedio
f.res.value = ( val1 + val2 + val3 + val4 ) / 4;
}
</script>
</head>
<body>

<form action="#" name"form0" method="post">
<table>
<tr><td><p>Valor 1: </p></td><td><input type="text" name="p1" value="7,75" disabled></td></tr>
<tr><td><p>Valor 2: </p></td><td><input type="text" name="p2" value="5,50" disabled></td></tr>
<tr><td><p>Valor 3: </p></td><td><input type="text" name="p3" value="9,50" disabled></td></tr>
<tr><td><p>Valor 4: </p></td><td><input type="text" name="p4" value="" onChange="calcular_prom(this.form);"></td></tr>
<tr><td><p>Resultado: </p></td><td><input type="text" name="res" value="" ></td></tr>
</table>
</form> 
<script>
Funciona bien pero al querer pasarla para que acepte [] deja de funcionar no manda ningun error pero tampoco muestra nada ... gracias por su ayuda
Código HTML:
function calcular_prom(f){
var val1 = parseInt(f.p1[0].value);
var val2 = parseInt(f.p2[0].value);
var val3 = parseInt(f.p3[0].value);
var val4 = parseInt(f.p4[0].value);

//Calculo del Promedio
f.res[0].value = ( val1 + val2 + val3 + val4 ) / 4;
}
</script>
</head>
<body>

<form action="#" name"form0" method="post">
<table>
<tr><td><p>Valor 1: </p></td><td><input type="text" name="p1[]" value="7,75" disabled></td></tr>
<tr><td><p>Valor 2: </p></td><td><input type="text" name="p2[]" value="5,50" disabled></td></tr>
<tr><td><p>Valor 3: </p></td><td><input type="text" name="p3[]" value="9,50" disabled></td></tr>
<tr><td><p>Valor 4: </p></td><td><input type="text" name="p4[]" value="" onChange="calcular_prom(this.form);"></td></tr>
<tr><td><p>Resultado: </p></td><td><input type="text" name="res[]" value="" ></td></tr>
</table>
</form> 
  #2 (permalink)  
Antiguo 29/05/2014, 18:10
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 6 meses
Puntos: 1485
Respuesta: Promedio en arrays

buenas,
me parece que estas pensandolo como php... en javascript no funciona de esa manera. javascript no lo ve como un array, tienes que indicar el nombre tal cual lo tiene el atributo name. o sea, para el primer campo f['p1[]'].value.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 29/05/2014, 18:22
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 13 años, 4 meses
Puntos: 12
Respuesta: Promedio en arrays

Cita:
Iniciado por zerokilled Ver Mensaje
buenas,
me parece que estas pensandolo como php... en javascript no funciona de esa manera. javascript no lo ve como un array, tienes que indicar el nombre tal cual lo tiene el atributo name. o sea, para el primer campo f['p1[]'].value.
Tenias toda la razon hice ese ajuste y anda perfecto....

pero quize meter dentro de un do while (muestro mis alumnos de una consulta) pero ya no funciono :( tengo que hacer algo mas????
Código PHP:
<form action="#" name"form0" method="post">

<table>
<?php  
 
do { ?> 
<tr><td><p>Valor 1: </p></td><td><input type="text" name="p1[]" value="7,75" disabled></td></tr>
<tr><td><p>Valor 2: </p></td><td><input type="text" name="p2[]" value="5,50" disabled></td></tr>
<tr><td><p>Valor 3: </p></td><td><input type="text" name="p3[]" value="9,50" disabled></td></tr>
<tr><td><p>Valor 4: </p></td><td><input type="text" name="p4[]" value="" onChange="calcular_prom(this.form);"></td></tr>
<tr><td><p>Resultado: </p></td><td><input type="text" name="res[]" value="" ></td></tr>
<?php } while ($row_calificar mysql_fetch_assoc($calificar)); ?>
</table>
</form>
  #4 (permalink)  
Antiguo 29/05/2014, 18:52
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 6 meses
Puntos: 1485
Respuesta: Promedio en arrays

ya eso es tema de php, el cual no manejo. pero por lo que logro interpretar, quieres calcular el promedio de cada estudiante. en ese caso, los campos no deberían tener nombres distintos. sino que cada alumno debe tener un nombre distinto entre si, pero igual para todos los campos. o sea, para el primer alumno, los campos serían p1[], para el segundo p2[], etc. luego la función en javascript deberías mejorarla. yo haría una función genérica para calcular promedio de modo que reciba un número variable de argumentos y que devuelva el valor:

Código:
function avg(){
for(var sum = 0, i = 0, ln = arguments.length; i < ln; i++) sum += Number(arguments[i].value);
return sum / ln;
}
al invocarlo, le pasas cada uno de los campos que constituye el promedio. por ejemplo, podrías invocarlo así this.form['res[]'][0].value = avg.apply(null, this.form['p1[]']); en el evento onchange del último campo. this.form['res[]'][0].value es la referencia para el campo del promedio del primero alumno. con php tienes que cambiar la referencia para cada alumno, tanto para el campo de resultado como los campos a pasar a la función.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Etiquetas: arrays, funcion, input, promedio, valor
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 11:06.