Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Aplicar each a una funcion

Estas en el tema de Aplicar each a una funcion en el foro de Frameworks JS en Foros del Web. Muy buenos dias Amigos!!! estaba necesitando si alguien me puede ayudar a destrabarme (vengo del foro de javascript) porque tengo una funcion que va generando ...
  #1 (permalink)  
Antiguo 10/06/2011, 10:00
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 10 años, 1 mes
Puntos: 4
Aplicar each a una funcion

Muy buenos dias Amigos!!!
estaba necesitando si alguien me puede ayudar a destrabarme (vengo del foro de javascript)
porque tengo una funcion que va generando un span con informacion cada vez que el usuario va agregando tablas html
la funcion es esta
Código Javascript:
Ver original
  1. jQuery.fn.exists = function(){return jQuery(this).length>0;}
  2.  
  3.     function actualizarIVA(iva,valor){
  4.        
  5.         id=iva.toString();
  6.         id=id.replace(".","");
  7.         if($('#iva'+id).exists())
  8.         {  
  9.        
  10.  
  11.         var vactual=$('#iva'+id+' span.total').text();
  12.         $('#iva'+id+' span.total').text(vactual+valor);
  13.        
  14.         }
  15.         else
  16.         {
  17.            
  18.             $('#iva').append('<span id="iva'+id+'" '+iva+<span class="total">'+valor+'</span></span>');
  19.         }
  20.     }
el problema es que ahora las tablas que generaba el usuario , las genera PHP entonces como puedo iniciar la funcion actualizarIVA(iva,valor) por cada tabla que se genere dinamicamene
tendria que aplicarle each a la funcion? como haria eso?
Muchas gracias y que tengan un buen dia
  #2 (permalink)  
Antiguo 10/06/2011, 10:05
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 9 años, 6 meses
Puntos: 344
Respuesta: Aplicar each a una funcion

Los errores que tienes son en el uso de $.

Cuando haces $('#iva'+id+' span.total') estás accediendo a varios elementos y tienes que recorrerlos con each:


Código Javascript:
Ver original
  1. var vactual=$('#iva'+id+' span.total').each(
  2. function(){
  3. $(this).text($(this).text()+valor);
  4. });
  #3 (permalink)  
Antiguo 10/06/2011, 10:10
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 10 años, 1 mes
Puntos: 4
Respuesta: Aplicar each a una funcion

Hola como estas gracias por responder
Buenisimo ahora lo pruebo
Saludos y muchas gracias
  #4 (permalink)  
Antiguo 10/06/2011, 10:18
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 10 años, 1 mes
Puntos: 4
Respuesta: Aplicar each a una funcion

me sigue haciendo lo mismo , la funcion se inicia pero lee la primera fila de la tabla
No se que hacer!!!
  #5 (permalink)  
Antiguo 10/06/2011, 10:19
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 9 años, 6 meses
Puntos: 344
Respuesta: Aplicar each a una funcion

No he visto el código HTML, así que no te puedo decir en que te falla, sólo los errores que había visto en el javascript.
  #6 (permalink)  
Antiguo 10/06/2011, 10:26
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 10 años, 1 mes
Puntos: 4
Respuesta: Aplicar each a una funcion

la funcion que puse mas arriba anda perfecto ,pero unicamente cuando el usuario genera las filas
yo queria usar la misma funcion modificada para que funcione tambien cuando las filas de la tabla html se generen dinamicamente
pongo el html
Código HTML:
Ver original
  1. <body onLoad="actualizarIVA(document.getElementById('ivaso').value,+document.getElementById('iv').value)">
Código PHP:
Ver original
  1. echo '<tr>';
  2. echo '<input type="hidden" name="compra_arti_id[]" value="'.$compra_arti_id[$i].'">';
  3. echo '<input type="hidden" name="compra_descripcion[]" value="'.$fila['descripcion'].'">';
  4. echo '<input type="hidden" name="compra_cod_art[]" value="'.$fila['articulo_id'].'">';
  5. echo '<td style="width:7%; ">' .$fila['articulo_id'].'</td>';
  6. echo '<td style="width:10%;">' .$fila['ean'].'</td>';
  7. echo '<td style="width:30%;">'.$fila['descripcion'].'</td>';
  8. echo '<td style="width:8%;" >'.$compra_proce[$i].'<input type="hidden" name="compra_proce[]" value="'.$compra_proce[$i].'" ></td>';
  9. echo '<td style="width:5%; ">'.$compra_gar_art[$i].'<input type="hidden" name="compra_gar_art[]" value="'.$compra_gar_art[$i].'"></td>';
  10. echo '<td style="width:4%; ">'.$stk_suc[$i].'<input type="hidden" name="stk_suc[]" value="'.$stk_suc[$i].'"></td>';
  11. echo '<td style="width:4%; ">'.$compra_cantidad[$i].'<input type="hidden" name="compra_cantidad[]" value="'.$compra_cantidad[$i].'"></td>';
  12. echo '<td style="width:8%; ">'.number_format($compra_precio[$i], 2).'<input type="hidden" name="compra_precio[]" value="'.$compra_precio[$i].'"></td>';
  13. echo '<td style="width:5%; ">'.$fila['iva_detalle'].'<input type="hidden" name="compra_iva_det[]" [U]id="ivaso"[/U] value="'.$fila['iva_detalle'].'"></td>';
  14. echo '<td style="width:8%; ">'.number_format($compra_iva[$i], 2).'<input type="hidden"[COLOR="Red"]id="iv"[/COLOR] name="compra_iva[]"  value="'.$compra_iva[$i].'"></td>';
  15. echo '<td style="width:8%; ">'.number_format($tl, 2).'<input type="hidden" name="compra_subtotal[]" value="'.$tl.'"></td>';
  16. echo '<td style="width:3%;text-align:center "><a class="elimina" style="cursor:pointer"><img src="imagenes/delete.png" /></a></td>';
  17. echo '<td class="txt" style="display:none">'.$tl.'</td>';
  18. echo '<td class="iva" style="display:none">'.$compra_iva[$i].'</td>';
  19. echo '</tr>';
  #7 (permalink)  
Antiguo 10/06/2011, 10:29
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 9 años, 6 meses
Puntos: 344
Respuesta: Aplicar each a una funcion

Con dinámicamente, ¿te refieres con javascript?
  #8 (permalink)  
Antiguo 10/06/2011, 10:31
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 10 años, 1 mes
Puntos: 4
Respuesta: Aplicar each a una funcion

No, estoy trayendo los registros de la bd con PHP
  #9 (permalink)  
Antiguo 10/06/2011, 10:33
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 9 años, 6 meses
Puntos: 344
Respuesta: Aplicar each a una funcion

Puedes poner el código completo y explicar un poco lo que quieres hacer para ver si me entero mejor y te puedo ayudar.
  #10 (permalink)  
Antiguo 10/06/2011, 10:48
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 10 años, 1 mes
Puntos: 4
Respuesta: Aplicar each a una funcion

buenisimo
con esta funcion, se va generando el iva y su respectivo valor a medida que el usuario va agregando filas a una tabla html

Código Javascript:
Ver original
  1. jQuery.fn.exists = function(){return jQuery(this).length>0;}
  2.  
  3.     function actualizarIVA(iva,valor){
  4.        
  5.         id=iva.toString();
  6.         id=id.replace(".","");
  7.         if($('#iva'+id).exists())
  8.         {  
  9.        
  10.  
  11.         var vactual=$('#iva'+id+' span.total').text();
  12.         var vactual=vactual.replace(/,/g,'');
  13.         var vactual=parseFloat(vactual);
  14.         $('#iva'+id+' span.total').text((vactual+valor).formatMoney(2, '.', ','));
  15.        
  16.         }
  17.         else
  18.         {
  19.            
  20.             $('#iva').append('<span id="iva'+id+'" style="font-size:9px;height:10px;color:#F00">'+iva+'%&nbsp;<span class="total" style="font-size:11px;height:10px;color:#000" >'+(valor).formatMoney(2, '.', ',')+'</span></span>');
  21.         }
  22.     }
hasta ahi va todo perfecto
pero ahora le doy la posibilidad al usuario de modifcar todas las filas de la tabla html una vez ingresado en la bd
entonces en otra pagina el usuario busca lo que ingreso y con php muestro todo lo que ingreso anteriormente , lo unico que me falta es mostrar el iva y su valor a medida que las filas se van generando con php
o sea , si puedo lograr que esta misma funcion se inicie cada vez que una fila se genere, me andaria bien
pero no puedo lograr eso
estube probando tambien asi
Código PHP:
Ver original
  1. echo '<tr>';
  2. echo '<input type="hidden" name="compra_arti_id[]" value="'.$compra_arti_id[$i].'">';
  3. echo '<input type="hidden" name="compra_descripcion[]" value="'.$fila['descripcion'].'">';
  4. echo '<input type="hidden" name="compra_cod_art[]" value="'.$fila['articulo_id'].'">';
  5. echo '<td style="width:7%; ">' .$fila['articulo_id'].'</td>';
  6. echo '<td style="width:10%;">' .$fila['ean'].'</td>';
  7. echo '<td style="width:30%;">'.$fila['descripcion'].'</td>';
  8. echo '<td style="width:8%;" >'.$compra_proce[$i].'<input type="hidden" name="compra_proce[]" value="'.$compra_proce[$i].'" ></td>';
  9. echo '<td style="width:5%; ">'.$compra_gar_art[$i].'<input type="hidden" name="compra_gar_art[]" value="'.$compra_gar_art[$i].'"></td>';
  10. echo '<td style="width:4%; ">'.$stk_suc[$i].'<input type="hidden" name="stk_suc[]" value="'.$stk_suc[$i].'"></td>';
  11. echo '<td style="width:4%; ">'.$compra_cantidad[$i].'<input type="hidden" name="compra_cantidad[]" value="'.$compra_cantidad[$i].'"></td>';
  12. echo '<td style="width:8%; ">'.number_format($compra_precio[$i], 2).'<input type="hidden" name="compra_precio[]" value="'.$compra_precio[$i].'"></td>';
  13. echo '<td style="width:5%; ">'.$fila['iva_detalle'].'<input type="hidden" name="compra_iva_det[]" id="ivaso"  value="'.$fila['iva_detalle'].'"></td>';
  14. echo '<td style="width:8%; ">'.number_format($compra_iva[$i], 2).'<input type="hidden" id="iv" name="compra_iva[]"  value="'.$compra_iva[$i].'"></td>';
  15. echo '<td style="width:8%; ">'.number_format($tl, 2).'<input type="hidden" name="compra_subtotal[]" value="'.$tl.'"></td>';
  16. echo '<td style="width:3%;text-align:center "><a class="elimina" style="cursor:pointer"><img src="imagenes/delete.png" /></a></td>';
  17. echo '<td class="txt" style="display:none">'.$tl.'</td>';
  18. echo '<td class="iva" style="display:none">'.$compra_iva[$i].'</td>';
  19. echo '</tr>';
  20. echo '<script language="javascript" type="text/javascript">
  21.  
  22. $(document).ready(function(){  
  23.      
  24.         actualizarIVA(document.getElementById("ivaso").value,+document.getElementById("iv").value)
  25.      });
  26. </script>';
pero tambien me toma el primer id ,probe tambien en ponerle una clase a iv y a ivaso y me hace lo mismo
Te agradezco un monton por tu paciencia
  #11 (permalink)  
Antiguo 10/06/2011, 10:56
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 9 años, 6 meses
Puntos: 344
Respuesta: Aplicar each a una funcion

Sinceramente, sigo sin entender que es lo que intentas hacer.

Lo que si veo es que sigues usando mal el $('#iva'+id+' span.total').text() porque $('#iva'+id+' span.total') te puede devolver más de un nodo del DOM y sólo estarías cogiendo el primero.

Volviendo a lo anterior, si dices que las filas las generas con php no entiendo el problema que tienes y para que usas javascript, usa php para realizar esas cuentas.

No se si voy a poderte ayudar sin entender bien el concepto de lo que intentas hacer.
  #12 (permalink)  
Antiguo 10/06/2011, 11:07
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 10 años, 1 mes
Puntos: 4
Respuesta: Aplicar each a una funcion

bueno esperame unos minutos y subo todo a un hosting y cuando lo pruebes te vas a dar cuenta
por favor no me abandones jajaja
dame un ratito y te aviso
  #13 (permalink)  
Antiguo 10/06/2011, 11:19
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 10 años, 1 mes
Puntos: 4
Respuesta: Aplicar each a una funcion

listo
http://www.sincroniavirtual.com/gestion/edit_compra.php
en el buscador pone 2
y despues de apretar enter
pone en numero sucursal '12 ' y numero comprobante '12' y en echo acepta
fijate que abajo en donde dice IVA insc % la suma de todo da 4.20 porque la funcion esta tomando la primera fila en la columna donde esta esto % y lo hace 20 veces (que es el numero de filas generadas)
te agradezco muchisimo por la ayuda

Última edición por tumbero_x; 10/06/2011 a las 11:31
  #14 (permalink)  
Antiguo 10/06/2011, 11:41
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 9 años, 6 meses
Puntos: 344
Respuesta: Aplicar each a una funcion

Madre mía. No me entero de nada.

He hecho lo que me has dicho y aparece una tabla gigante pero no se que es lo que tengo que hacer para ver lo que te pasa.
  #15 (permalink)  
Antiguo 10/06/2011, 11:43
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 10 años, 1 mes
Puntos: 4
Respuesta: Aplicar each a una funcion

jajaja

fijate que abajo en donde dice IVA insc % la suma de todo da 4.20 porque la funcion esta tomando la primera fila en la columna donde esta esto % y lo hace 20 veces (que es el numero de filas generadas)
  #16 (permalink)  
Antiguo 10/06/2011, 11:47
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 10 años, 1 mes
Puntos: 4
Respuesta: Aplicar each a una funcion

despues en buscar articulo pone 711
dale enter, en los campos vacios pone cualquier cosa, y al aceptar te va a generar el iva de ese articulo que es 10.500 y su respectivo valor , yo necesito hacer esto mismo pero cuando me aparece toda la tabla completa, con todas las filas
  #17 (permalink)  
Antiguo 10/06/2011, 11:57
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 9 años, 6 meses
Puntos: 344
Respuesta: Aplicar each a una funcion

He visto lo que me dices.

Entonces, ¿qué datos quieres calcular exactamente y donde quieres que se vea el resultado?
  #18 (permalink)  
Antiguo 10/06/2011, 12:03
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 10 años, 1 mes
Puntos: 4
Respuesta: Aplicar each a una funcion

lo que quiero hacer es ; en la columna 'iva' si dice 21.000 , sumar todos los numeros de la columna '%'
que su iva sea 21.000 y abajo en donde dice IVA insc % , muestre 21.000% y al lado el total
y lo mismo si en las filas de la tabla aparece otro numero ejemplo 10.500 y que haga exactamente lo mismo
pero solamente cuando se carga la pagina
Otra vez gracias
  #19 (permalink)  
Antiguo 10/06/2011, 12:15
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 9 años, 6 meses
Puntos: 344
Respuesta: Aplicar each a una funcion

Ah ya entiendo algo más. Ahora mismo cuando entraba en la página me mostraba sólo el 21% con 4.20 y no aparecía el de 10.50% cuando si estaba en la tabla.

Lo mejor sería hacer una función que recorriese la tabla e hiciese los cálculos y así te quitas de tantos problemas.
  #20 (permalink)  
Antiguo 10/06/2011, 12:17
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 10 años, 1 mes
Puntos: 4
Respuesta: Aplicar each a una funcion

exactamente
lo que yo queria hacer es modificar esa misma funcion para que lo haga cuando se inicie la pagina,ya que esa funcion la hice con ayuda de otro usuario del foro
pero no se como
  #21 (permalink)  
Antiguo 10/06/2011, 13:11
Avatar de chicohot20  
Fecha de Ingreso: mayo-2009
Mensajes: 388
Antigüedad: 11 años, 5 meses
Puntos: 43
Respuesta: Aplicar each a una funcion

A ver si te sirve esto:

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
  3. <head><title>Jeje : : </title>
  4. <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
  5. <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script>
  6. <script type="text/javascript">
  7.     $(function(){
  8.         var iva,ivatmp,imp;
  9.         var totaliva=0;
  10.         $("table tbody tr").each(function(index,el){
  11.             iva=$(this).children("td:eq(1)").text();
  12.             ivatmp=$(this).next().children("td:eq(1)").text();
  13.             imp=parseFloat($(this).children("td:eq(2)").text());
  14.             totaliva=totaliva+imp;
  15.             if(iva!=ivatmp){
  16.                 $("#iva").append(iva+"% = "+totaliva+"<br />");
  17.                 totaliva=0;
  18.             }
  19.         });
  20.     });
  21. </head>
  22.  
  23.     <thead>
  24.     <tr>
  25.         <th>DESCRIPCION</th>
  26.         <th>IVA</th>
  27.         <th>%</th>
  28.     </tr>
  29.     </thead>
  30.     <tbody>
  31.     <tr><td>CABLE ADAPTADOR P MOUSEPS2 DB9HPS</td><td>21.00</td><td>0.21</td></tr>
  32.     <tr><td>CABLE ADAPTADOR P MOUSEPS2 DB9HPS</td><td>21.00</td><td>0.84</td></tr>
  33.     <tr><td>CABLE ADAPTADOR P MOUSEPS2 DB9HPS</td><td>21.00</td><td>0.22</td></tr>
  34.     <tr><td>CABLE ADAPTADOR P MOUSEPS2 DB9HPS</td><td>21.00</td><td>0.21</td></tr>
  35.     <tr><td>CABLE ADAPTADOR P MOUSEPS2 DB9HPS</td><td>10.50</td><td>0.21</td></tr>
  36.     <tr><td>CABLE ADAPTADOR P MOUSEPS2 DB9HPS</td><td>10.50</td><td>0.84</td></tr>
  37.     <tr><td>CABLE ADAPTADOR P MOUSEPS2 DB9HPS</td><td>10.50</td><td>0.10</td></tr>
  38.     </tbody>
  39. <br />
  40.     <span id="iva"></span>
  41.  
  42. </body>
  43. </html>
  #22 (permalink)  
Antiguo 10/06/2011, 13:40
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 10 años, 1 mes
Puntos: 4
Respuesta: Aplicar each a una funcion

Perfecto !!!
Ya casi lo tengo
Cuando se carga la pagina hace exactamente lo que necesitaba
el unico inconveniente es que cuando haga esto
$("#iva").append(iva+"% = "+totaliva+"<br />");
yo necesito que haga esto otro
$('#iva').append('<span id="iva'+id+'" >'+iva+'%<span class="total" >'+valor+'</span></span>');
que iva se transforme en iva+id
pero ya lo voy a sacar
Saludos y muchas gracias
  #23 (permalink)  
Antiguo 10/06/2011, 14:17
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 10 años, 1 mes
Puntos: 4
Respuesta: Aplicar each a una funcion

Listo !!!!
me quedo asi por si a alguien le sirve (modifique casi nada )
todo el credito es para alexg88 y chicohot20
Código Javascript:
Ver original
  1. $(document).ready(function(){  
  2.         var iva,ivatmp,imp,idr;
  3.        
  4.         var totaliva=0;
  5.        
  6.         $("#gri tbody tr").each(function(index,el){
  7.             iva=$(this).children("td:eq(8)").text();
  8.             ivatmp=$(this).next().children("td:eq(8)").text();
  9.             imp=parseFloat($(this).children("td:eq(9)").text());
  10.             totaliva=totaliva+imp;
  11.            
  12.             idr=iva.toString();
  13.             idr=idr.replace(".","");
  14.             if(iva!=ivatmp){
  15.                 alert(idr)
  16.                // $("#iva").append(iva+"% = "+totaliva+"<br />");
  17.                 $('#iva').append('<span id="iva'+idr+'" style="font-size:9px;height:10px;color:#F00">'+iva+'%&nbsp;<span class="total" style="font-size:11px;height:10px;color:#000" >'+(totaliva).formatMoney(2, '.', ',')+'</span></span>');
  18.                 totaliva=0;
  19.             }
  20.         });
  21.     });
Saludos!!!
  #24 (permalink)  
Antiguo 10/06/2011, 14:39
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 9 años, 6 meses
Puntos: 344
Respuesta: Aplicar each a una funcion

Que bien que lo hayas resuelto.

Lo raro es que no me han llegado las notificaciones de los mensajes al correo como siempre.

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 13:13.