Foros del Web » Programando para Internet » Javascript »

Problema con funcion 2

Estas en el tema de Problema con funcion 2 en el foro de Javascript en Foros del Web. Hola amigos....disculpen la molestia pero tengo el siguiente problema.. En la funcion que esta abajo solo me reconoce un text donde se debe escribir el ...
  #1 (permalink)  
Antiguo 22/03/2011, 11:42
Avatar de Deathmetalrules  
Fecha de Ingreso: diciembre-2010
Ubicación: Mas - aya
Mensajes: 65
Antigüedad: 13 años, 4 meses
Puntos: 8
Problema con funcion 2

Hola amigos....disculpen la molestia pero tengo el siguiente problema..
En la funcion que esta abajo solo me reconoce un text donde se debe escribir el resultado de la suma de 3 numero divididos entre 3, pero esta solo me lo hace para uno de los datos esto solo es un ejemplo del codigo real ya que el otro llena la tabla apartir de la a BD . ......alguna ayuda ....gracias

Código PHP:
<html>
      <
head>
      <
title>Calculo de promedios</title
        <
script
      function 
pagoscl()
       {

      
= new Array();
      
p[0] = document.getElementById("pago1[]").value
      p
[1] = document.getElementById("pago2[]").value
      p
[2] = document.getElementById("pago3[]").value
      p
[3]=document.getElementById("prom[]")
      for (
0campos p.lengthcamposi++)
      {
      
p[i] = (!isNaN(p[i]) && p[i] != '')? Number(p[i]): 0;
       
        if ( 
p[0] != "" )
        {
        
p[3].value p[0]    //aca se escribe el resultado
        
}
        if ( 
p[0] ||  p[1] != "" )
        {
        var 
suma1 =  p[0] + p[1];

        var 
pg Number(suma1 2);

        
pg pg.toFixed(1);

        
pg pg.substring(0pg.length 2);

        
p[3].value pg //aca se escribe el resultado

        
}

        if ( 
p[0] ||  p[1] ||  p[2] != "" )
        {

        var 
suma2 =  p[0] +  p[1] +  p[2];

        var 
pg Number(suma2 3);

        
pg pg.toFixed(1);

        
pg pg.substring(0pg.length 2);

        
p[3].value pg //aca se escribe el resultado
        
}
                       
      }
}
      
</script>

      </head>

      <body>

      <form>
       
<table  cellpadding="0" cellspacing=0 width="50%" align=center border=0>
<thead><tr><td colspan=12 align=center>Proveedores</td></tr></thead>
<thead><tr><td>Nª</td><td>Codigo</td><td>Empresa</td><td>I abono</td><td>II abono</td><td>III abono</td><td>Total</td></tr></thead>
<tr>
<td><input type="text" value="1" name="id[]" style="color:#000000; width:36px; text-align:center;border-color:#A0A0A4"></td>
<td><input type="text" value="GCrp-3" name="cod[]" style="color:#000000; width:56px; text-align:center;border-color:#A0A0A4"></td>
<td>Gonzalez Corporation</td>
<td><input  name="pago1[]" id="pago1[]" onMouseDown="pagoscl(this.name)"  onKeyUp="pagoscl(this.name)" style="color:#000000; width:36px; text-align:center;border-color:#A0A0A4"></td>  
<td><input name="pago2[]" id="pago2[]" onMouseDown="pagoscl(this.name)"  onKeyUp="pagoscl(this.name)" style="color:#000000; width:36px; text-align:center;border-color:#A0A0A4"></td> 
<td><input name="pago3[]" id="pago3[]" onMouseDown="pagoscl(this.name)"  onKeyUp="pagoscl(this.name)"  style="color:#000000; width:36px; text-align:center;border-color:#A0A0A4"></td> 
<td><input type="text" value="" name="prom[]" id="prom[]" style="color:#000000; width:36px; text-align:center;border-color:#A0A0A4"></td></tr>




<tr><td><input type="text" value="2" name="id[]" style="color:#000000; width:36px; text-align:center;border-color:#A0A0A4"></td>
<td><input type="text" value="DLz-1" name="cod[]" style="color:#000000; width:56px; text-align:center;border-color:#A0A0A4"></td>
<td>Distribuidora Lopez</td>
<td><input  name="pago1[]" id="pago1[]" onMouseDown="pagoscl(this.name)"  onKeyUp="pagoscl(this.name)"  style="color:#000000; width:36px; text-align:center;border-color:#A0A0A4"></td>  
<td><input name="pago2[]" id="pago2[]" onMouseDown="pagoscl(this.name)"  onKeyUp="pagoscl(this.name)"  style="color:#000000; width:36px; text-align:center;border-color:#A0A0A4"></td> 
<td><input name="pago3[]" id="pago3[]" onMouseDown="pagoscl(this.name)"  onKeyUp="pagoscl(this.name)"  style="color:#000000; width:36px; text-align:center;border-color:#A0A0A4"></td> 
<td><input type="text" value="" name="prom[]" id="prom[]" style="color:#000000; width:36px; text-align:center;border-color:#A0A0A4" ></td></tr></table>
      </form>
 
      </body>

      </html> 
  #2 (permalink)  
Antiguo 22/03/2011, 12:12
Avatar de laratik  
Fecha de Ingreso: mayo-2010
Ubicación: Cali
Mensajes: 317
Antigüedad: 13 años, 10 meses
Puntos: 63
Respuesta: Problema con funcion 2

Hola Deathmetalrules, rápidamente se me ocurre esto:

Código HTML:
Ver original
  1. <html>
  2.       <head>
  3.       <title>Calculo de promedios</title>  
  4.         <script>  
  5.       function pagoscl(pago)
  6.        {
  7.  
  8.       p = new Array();
  9.       p[0] = document.getElementById(pago+"_1").value
  10.       p[1] = document.getElementById(pago+"_2").value
  11.       p[2] = document.getElementById(pago+"_3").value
  12.       p[3]=document.getElementById(pago+"_prom")
  13.       for (i = 0, campos = p.length; i < campos; i++)
  14.      {
  15.      p[i] = (!isNaN(p[i]) && p[i] != '')? Number(p[i]): 0;
  16.        
  17.        if ( p[0] != "" )
  18.        {
  19.        p[3].value = p[0]    //aca se escribe el resultado
  20.        }
  21.        if ( p[0] ||  p[1] != "" )
  22.        {
  23.        var suma1 =  p[0] + p[1];
  24.  
  25.        var pg = Number(suma1 / 2);
  26.  
  27.        pg = pg.toFixed(1);
  28.  
  29.        pg = pg.substring(0, pg.length - 2);
  30.  
  31.        p[3].value = pg //aca se escribe el resultado
  32.  
  33.        }
  34.  
  35.        if ( p[0] ||  p[1] ||  p[2] != "" )
  36.        {
  37.  
  38.        var suma2 =  p[0] +  p[1] +  p[2];
  39.  
  40.        var pg = Number(suma2 / 3);
  41.  
  42.        pg = pg.toFixed(1);
  43.  
  44.        pg = pg.substring(0, pg.length - 2);
  45.  
  46.        p[3].value = pg //aca se escribe el resultado
  47.        }
  48.                        
  49.      }
  50. }
  51.      </script>
  52.  
  53.       </head>
  54.  
  55.       <body>
  56.  
  57.       <form>
  58.        
  59. <table  cellpadding="0" cellspacing=0 width="50%" align=center border=0>
  60. <thead><tr><td colspan=12 align=center>Proveedores</td></tr></thead>
  61. <thead><tr><td></td><td>Codigo</td><td>Empresa</td><td>I abono</td><td>II abono</td><td>III abono</td><td>Total</td></tr></thead>
  62. <tr>
  63. <td><input type="text" value="1" name="id[]" style="color:#000000; width:36px; text-align:center;border-color:#A0A0A4"></td>
  64. <td><input type="text" value="GCrp-3" name="cod[]" style="color:#000000; width:56px; text-align:center;border-color:#A0A0A4"></td>
  65. <td>Gonzalez Corporation</td>
  66. <td><input  name="gc" id="gc_1" onMouseDown="pagoscl(this.name)"  onKeyUp="pagoscl(this.name)" style="color:#000000; width:36px; text-align:center;border-color:#A0A0A4"></td>  
  67. <td><input name="gc" id="gc_2" onMouseDown="pagoscl(this.name)"  onKeyUp="pagoscl(this.name)" style="color:#000000; width:36px; text-align:center;border-color:#A0A0A4"></td>  
  68. <td><input name="gc" id="gc_3" onMouseDown="pagoscl(this.name)"  onKeyUp="pagoscl(this.name)"  style="color:#000000; width:36px; text-align:center;border-color:#A0A0A4"></td>  
  69. <td><input type="text" value="" name="gc" id="gc_prom" style="color:#000000; width:36px; text-align:center;border-color:#A0A0A4"></td></tr>
  70.  
  71.  
  72.  
  73.  
  74. <tr><td><input type="text" value="2" name="id[]" style="color:#000000; width:36px; text-align:center;border-color:#A0A0A4"></td>
  75. <td><input type="text" value="DLz-1" name="cod[]" style="color:#000000; width:56px; text-align:center;border-color:#A0A0A4"></td>
  76. <td>Distribuidora Lopez</td>
  77. <td><input  name="dl" id="dl_1" onMouseDown="pagoscl(this.name)"  onKeyUp="pagoscl(this.name)"  style="color:#000000; width:36px; text-align:center;border-color:#A0A0A4"></td>  
  78. <td><input name="dl" id="dl_2" onMouseDown="pagoscl(this.name)"  onKeyUp="pagoscl(this.name)"  style="color:#000000; width:36px; text-align:center;border-color:#A0A0A4"></td>  
  79. <td><input name="dl" id="dl_3" onMouseDown="pagoscl(this.name)"  onKeyUp="pagoscl(this.name)"  style="color:#000000; width:36px; text-align:center;border-color:#A0A0A4"></td>  
  80. <td><input type="text" value="" name="dl" id="dl_prom" style="color:#000000; width:36px; text-align:center;border-color:#A0A0A4" ></td></tr></table>
  81.       </form>
  82.  
  83.       </body>
  84.  
  85.       </html>

Debes tratar en lo menos posible repetir ids... osea JAMAS repitas ids.

Si vas a sacar los datos desde el servidor puedes utilizar:

Código PHP:
<input  name="<?php echo $nomEmpresa ?>" id="<?php echo $nomEmpresa."_1" ?>" onMouseDown="pagoscl(this.name)"  onKeyUp="pagoscl(this.name)" style="color:#000000; width:36px; text-align:center;border-color:#A0A0A4">
y si vas a enviar los datos también debes mejorar el name de la etiqueta y el javascript quedaria asi:
Código Javascript:
Ver original
  1. <html>
  2.       <head>
  3.       <title>Calculo de promedios</title>  
  4.         <script>  
  5.       function pagoscl(pago)
  6.        {
  7.        pago = pago.split("_")[0];
  8.  
  9.       p = new Array();
  10.       p[0] = document.getElementById(pago+"_1").value
  11.       p[1] = document.getElementById(pago+"_2").value
  12.       p[2] = document.getElementById(pago+"_3").value
  13.       p[3]=document.getElementById(pago+"_prom")
  14.       for (i = 0, campos = p.length; i < campos; i++)
  15.       {
  16.       p[i] = (!isNaN(p[i]) && p[i] != '')? Number(p[i]): 0;
  17.        
  18.         if ( p[0] != "" )
  19.         {
  20.         p[3].value = p[0]    //aca se escribe el resultado
  21.         }
  22.         if ( p[0] ||  p[1] != "" )
  23.         {
  24.         var suma1 =  p[0] + p[1];
  25.  
  26.         var pg = Number(suma1 / 2);
  27.  
  28.         pg = pg.toFixed(1);
  29.  
  30.         pg = pg.substring(0, pg.length - 2);
  31.  
  32.         p[3].value = pg //aca se escribe el resultado
  33.  
  34.         }
  35.  
  36.         if ( p[0] ||  p[1] ||  p[2] != "" )
  37.         {
  38.  
  39.         var suma2 =  p[0] +  p[1] +  p[2];
  40.  
  41.         var pg = Number(suma2 / 3);
  42.  
  43.         pg = pg.toFixed(1);
  44.  
  45.         pg = pg.substring(0, pg.length - 2);
  46.  
  47.         p[3].value = pg //aca se escribe el resultado
  48.         }
  49.                        
  50.       }
  51. }
  52.       </script>
  53.  
  54.       </head>
  55.  
  56.       <body>
  57.  
  58.       <form>
  59.        
  60. <table  cellpadding="0" cellspacing=0 width="50%" align=center border=0>
  61. <thead><tr><td colspan=12 align=center>Proveedores</td></tr></thead>
  62. <thead><tr><td></td><td>Codigo</td><td>Empresa</td><td>I abono</td><td>II abono</td><td>III abono</td><td>Total</td></tr></thead>
  63. <tr>
  64. <td><input type="text" value="1" name="id[]" style="color:#000000; width:36px; text-align:center;border-color:#A0A0A4"></td>
  65. <td><input type="text" value="GCrp-3" name="cod[]" style="color:#000000; width:56px; text-align:center;border-color:#A0A0A4"></td>
  66. <td>Gonzalez Corporation</td>
  67. <td><input  name="gc_1" id="gc_1" onMouseDown="pagoscl(this.name)"  onKeyUp="pagoscl(this.name)" style="color:#000000; width:36px; text-align:center;border-color:#A0A0A4"></td>  
  68. <td><input name="gc_2" id="gc_2" onMouseDown="pagoscl(this.name)"  onKeyUp="pagoscl(this.name)" style="color:#000000; width:36px; text-align:center;border-color:#A0A0A4"></td>  
  69. <td><input name="gc_3" id="gc_3" onMouseDown="pagoscl(this.name)"  onKeyUp="pagoscl(this.name)"  style="color:#000000; width:36px; text-align:center;border-color:#A0A0A4"></td>  
  70. <td><input type="text" value="" name="gc_prom" id="gc_prom" style="color:#000000; width:36px; text-align:center;border-color:#A0A0A4"></td></tr>
  71.  
  72.  
  73.  
  74.  
  75. <tr><td><input type="text" value="2" name="id[]" style="color:#000000; width:36px; text-align:center;border-color:#A0A0A4"></td>
  76. <td><input type="text" value="DLz-1" name="cod[]" style="color:#000000; width:56px; text-align:center;border-color:#A0A0A4"></td>
  77. <td>Distribuidora Lopez</td>
  78. <td><input  name="dl_1" id="dl_1" onMouseDown="pagoscl(this.name)"  onKeyUp="pagoscl(this.name)"  style="color:#000000; width:36px; text-align:center;border-color:#A0A0A4"></td>  
  79. <td><input name="dl_2" id="dl_2" onMouseDown="pagoscl(this.name)"  onKeyUp="pagoscl(this.name)"  style="color:#000000; width:36px; text-align:center;border-color:#A0A0A4"></td>  
  80. <td><input name="dl_3" id="dl_3" onMouseDown="pagoscl(this.name)"  onKeyUp="pagoscl(this.name)"  style="color:#000000; width:36px; text-align:center;border-color:#A0A0A4"></td>  
  81. <td><input type="text" value="" name="dl_prom" id="dl_prom" style="color:#000000; width:36px; text-align:center;border-color:#A0A0A4" ></td></tr></table>
  82.       </form>
  83.  
  84.       </body>
  85.  
  86.       </html>

Sacando de servidor:

Código PHP:
<input  name="<?php echo $nomEmpresa."_1" ?>" id="<?php echo $nomEmpresa."_1" ?>" onMouseDown="pagoscl(this.name)"  onKeyUp="pagoscl(this.name)" style="color:#000000; width:36px; text-align:center;border-color:#A0A0A4">
__________________
Programar apasiona y lo que apasiona es un arte, por lo tanto programar es un arte.

Quiero karma para en mi próxima vida ser un billonario bien dotado con alas.

Última edición por laratik; 22/03/2011 a las 12:27 Razón: Mejorar opciones de script
  #3 (permalink)  
Antiguo 23/03/2011, 11:33
Avatar de Deathmetalrules  
Fecha de Ingreso: diciembre-2010
Ubicación: Mas - aya
Mensajes: 65
Antigüedad: 13 años, 4 meses
Puntos: 8
Respuesta: Problema con funcion 2

gracias por el aporte laratik en serio es de gran ayuda voy a probar el codigo en verdad muchas gracias
  #4 (permalink)  
Antiguo 28/03/2011, 12:04
Avatar de Deathmetalrules  
Fecha de Ingreso: diciembre-2010
Ubicación: Mas - aya
Mensajes: 65
Antigüedad: 13 años, 4 meses
Puntos: 8
Respuesta: Problema con funcion 2

hola nuevamente laratik bueno la funcion fue un exito rotundo muchas gracias por tu coolaboracion ...... una pregunta algo tonta :
al asignar el name a el input de esta forma :
Cita:
<input name="<?php echo $nomEmpresa."_1" ?>" id="<?php echo $nomEmpresa."_1" ?>" onMouseDown="pagoscl(this.name)" onKeyUp="pagoscl(this.name)" style="color:#000000; width:36px; text-align:center;border-color:#A0A0A4">
una vez que se desea capturar el name enviadopor un metodo post como se haria en este caso que se le esta pasando una variable????????:
ejemplo:
$var=$POST['????????'];

como capturaria el valor en una variable???????????
  #5 (permalink)  
Antiguo 29/03/2011, 15:13
Avatar de laratik  
Fecha de Ingreso: mayo-2010
Ubicación: Cali
Mensajes: 317
Antigüedad: 13 años, 10 meses
Puntos: 63
Respuesta: Problema con funcion 2

Si lo vas a hacer así, me imagino que van a ser valores dinámicos y no podrás controlar cuantos registros existen, así que deberás usar una consulta a la base de datos y extraer los valores de allí, para luego concatenarlos al string que conoces, seria algo así:

Código PHP:
$_POST[$nomEmpresa."_1"
Espero haberte sido de ayuda.
__________________
Programar apasiona y lo que apasiona es un arte, por lo tanto programar es un arte.

Quiero karma para en mi próxima vida ser un billonario bien dotado con alas.
  #6 (permalink)  
Antiguo 05/04/2011, 11:21
Avatar de Deathmetalrules  
Fecha de Ingreso: diciembre-2010
Ubicación: Mas - aya
Mensajes: 65
Antigüedad: 13 años, 4 meses
Puntos: 8
Información Respuesta: Problema con funcion 2

hola nuevamente laratik......tengo un problema al enviar los datos mediante metodo post ya que lo estoy haciendo de la siguiente forma :

Código PHP:
echo'<table cellpadding=0 cellspacing=0 width=95% align=center border=0>';

echo
'<thead><tr><td colspan=12 align=center>Alumnos Inscritos en la Asignatura</td></tr></thead>';

echo
'<thead><tr><td>Nº</td><td>IdM</td><td>Materia</td><td>Apellidos y Nombres</td><td>I P</td><td>II P</td><td>III P</td><td>N.Final</td></tr></thead>';

for (
$i=0$i<$numfilas$i++)

{

$row mysql_fetch_array($datos);

$numlista $i 1;

echo
'<tr><td>'.$numlista.'</td>';

echo
'<td><input name=matricula[] value="'.$row["idmatricula"].'" style=color:black;width:36px></td>';

echo
'<td><input name=materia[] value="'.$row["codmateria"].'" style=color:black;width:66px></td>';

echo
'<td>'.$row["apellidos"].' '.$row["nombre"].'</td>';

echo
'<td><select [COLOR="Blue"]name="'.$numlista.'_1[]""[/COLOR] id="'.$numlista.'_1"" onChange="pagoscl(this.name)" style=color:black>';

echo
'<option>-1</option>';

$llena2="select * from notas";

$result mysql_query($llena2);

while (
$row2 mysql_fetch_array($result))
{
echo
'<option value="'.$row2["nota"].'">'.$row2["nota"].'</option>';
}
echo
'</select></td>';
  
echo
'<td><select [COLOR="Blue"]name="'.$numlista.'_2[]""[/COLOR] id="'.$numlista.'_2"" onChange="pagoscl(this.name)" style=color:black>';

echo
'<option>-1</option>';

$llena2="select * from notas";

$result mysql_query($llena2);

while (
$row2 mysql_fetch_array($result))
{
echo
'<option value="'.$row2["nota"].'">'.$row2["nota"].'</option>';
}
echo
'</select></td>';

echo
'<td><select [COLOR="Blue"]name="'.$numlista.'_3[]""[/COLOR] id="'.$numlista.'_3"" onChange="pagoscl(this.name)" style=color:black>';
echo
'<option>-1</option>';

$llena2="select * from notas";

$result mysql_query($llena2);

while (
$row2 mysql_fetch_array($result))
{
echo
'<option value="'.$row2["nota"].'">'.$row2["nota"].'</option>';
}
echo
'</select></td>';

echo
'<td><input type=text name=prom[]  id="'.$numlista.'_prom"" style=color:black;width:36px></td></tr>';

}
echo
'</table>'

Código PHP:
echo'<td><select [COLOR="Blue"]name="'.$numlista.'_1[]""[/COLOR] id="'.$numlista.'_1"" onChange="pagoscl(this.name)" style=color:black>'
no tengo problemas con la funcion, la verdad me funciona de maravilla tal como yo queria, pero ahora quiero guardar los datos pero no se como enviarlo por metodo post....disculpa las molestias
  #7 (permalink)  
Antiguo 05/04/2011, 17:20
Avatar de laratik  
Fecha de Ingreso: mayo-2010
Ubicación: Cali
Mensajes: 317
Antigüedad: 13 años, 10 meses
Puntos: 63
Respuesta: Problema con funcion 2

No se si entendí bien, pero lo que quieres es capturar los datos de las listas que has enviando por método post, ejemplo "1_1", "1_2", "1_3", 1_prom", "2_1", etc. Si es así, una forma rápida que se me ocurre es la de enviar $numlista como otro paramento de la solicitud dentro de un botón hidden:

Código PHP:
<input type="hidden" name="numlista" values= "<?php echo $numlista ?>"  />
Al realizar el submit este valor se enviara con el resto de datos y para recuperarlos simplemente haces:

Código PHP:
for( $i=0$i<$_POST["numlista"]; $i++) {
    echo 
"nota1: ".$_POST[(i+1)."_1"]."<br/>";
    echo 
"nota2: ".$_POST[(i+1)."_2"]."<br/>";
    echo 
"nota3: ".$_POST[(i+1)."_3"]."<br/>";
    echo 
"promedio: ".$_POST[(i+1)."_prom"];

Eso se me ha ocurrido al vuelo, aunque tambien puedes volver a realizar la consulta a la base de datos, cosa que se me hace muy pesada. Igual solo estoy especulando y no es eso lo que necesitas, si es asi por favor explicalo mejor.
__________________
Programar apasiona y lo que apasiona es un arte, por lo tanto programar es un arte.

Quiero karma para en mi próxima vida ser un billonario bien dotado con alas.

Etiquetas: funcion
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 17:31.