Foros del Web » Programando para Internet » Javascript »

Problemas con funcion para acumulador !!!

Estas en el tema de Problemas con funcion para acumulador !!! en el foro de Javascript en Foros del Web. Hola gente !!!!! Les comento como viene el tema. Tengo una funcion que me acumula en una variable los valores de de costo$ , cada ...

  #1 (permalink)  
Antiguo 29/08/2008, 06:05
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Pregunta Problemas con funcion para acumulador !!!

Hola gente !!!!!
Les comento como viene el tema.
Tengo una funcion que me acumula en una variable los valores de de costo$ , cada vez que agrego una fila, se incrementa esa variable en la cant de costo$, pero pasa que si en la misma fila sigo seleccionando me lo sigue sumando.

O sea vamos a la 1º Fila si agregar nada,
seleccionamos 1 item de la lista: acumula el valor
seleccionamos 1 item en la misma fila: tambien acumula el valor

Esta es la funcion.
Código PHP:
valorpesos=0;
valordolar=0;
totcos1_mp_pesos=0;
totcos1_mp_dolar=0;
function 
acumula(form){
  
valorpesos=parseFloat(document.form[c4].value); //tomo valor de costo_mp_pesos
  
totcos1_mp_pesos totcos1_mp_pesos valorpesos;
 
 
document.form.totcos_mp_pesos.value totcos1_mp_pesos.toFixed(4);
  
valordolar=parseFloat(document.form[c5].value); //tomo valor de costo_mp_dolar
  
totcos1_mp_dolar totcos1_mp_dolar valordolar;
  
document.form.totcos_mp_dolar.value totcos1_mp_dolar.toFixed(4);

Asi llamo a la funcion desde PHP:
Código PHP:
<select name="lista_1" onChange="listaSeleccionada(this);acumula(this)"
El tema es que cada vez que hago un Select me acumula.
Como lo podria poner para que solo me acumule por fila ?????
Pero si en la misma fila cambio el select, el valor a acumular siempre es el ultimo.

Saludoos y Gracias !!!!
__________________
Mail: [email protected]
  #2 (permalink)  
Antiguo 29/08/2008, 06:10
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Problemas con funcion para acumulador !!!

Pueden ver el ejemplo ACA

Saludos !!!
__________________
Mail: [email protected]
  #3 (permalink)  
Antiguo 01/09/2008, 06:01
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Problemas con funcion para acumulador !!!

Como podria hacer que si en la misma fila tengo que cambiar la seleccion me sume solo el ultimo valor que seleccione, asi como esta ahora, si estoy en la misma fila y cambio la seleccion, me acumula, pero estando en la misma fila, o sea que no esta andando como debaria.

Gracias
__________________
Mail: [email protected]
  #4 (permalink)  
Antiguo 01/09/2008, 10:24
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Problemas con funcion para acumulador !!!

No puedo entrar a la página de ejemplo, me dice que la página es inexistente .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 01/09/2008, 11:55
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Problemas con funcion para acumulador !!!

Ahora ? :(

Pasa que lo tengo hosteado en mi pc :)
Tengo que ver de subirlo a algun host que soporte mysql, php ...

Gracias.
__________________
Mail: [email protected]
  #6 (permalink)  
Antiguo 01/09/2008, 12:16
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Pregunta Respuesta: Problemas con funcion para acumulador !!!

Ya pude verlo, ¿no será mejor en vez de acumular cada vez que seleccionamos algo en el select recorramos todos los input y los sumemos?.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 01/09/2008, 13:41
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Problemas con funcion para acumulador !!!

Seria como un
for ($i=1;$i<CantClicks;$i++)
y asi recorro los datos que ingreso ???

Gracias David !!!
__________________
Mail: [email protected]
  #8 (permalink)  
Antiguo 01/09/2008, 13:45
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Problemas con funcion para acumulador !!!

No, no era a eso a lo que me refería, me refería a que como quieres sumar los valores de los input que creas dinámicamente, puedes recorrer todos los inputs creados y sumarlos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #9 (permalink)  
Antiguo 01/09/2008, 14:04
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Problemas con funcion para acumulador !!!

Ahhhh ahi me mataste !!!, como seria eso ?
Tendrias un ejemplito de como hacerlo ?

Gracias !!!
__________________
Mail: [email protected]
  #10 (permalink)  
Antiguo 02/09/2008, 12:29
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Problemas con funcion para acumulador !!!

Alguna idea de como encarar el ejemplo ?

Gracias
__________________
Mail: [email protected]
  #11 (permalink)  
Antiguo 02/09/2008, 12:55
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Problemas con funcion para acumulador !!!

De una forma poco ortodoxa (como siempre de hecho son mis ideas ) sería:
Código PHP:
function sumarListas(nombreatributo) {
sumados 0;
suma 0;
for (
contador=0sumados<contcontador++) {
   if (
form[nombre contador]) {
      
lista form[nombre contador];
      
suma += parseInt(lista.options[lista.selectedIndex].getAttribute(atributo));
      
sumados++;
   }
}
return 
suma;

Y para la llamada sería por ejemplo:
Código PHP:
sumaalt1 sumarListas("lista_""alt1"
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #12 (permalink)  
Antiguo 03/09/2008, 08:48
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Problemas con funcion para acumulador !!!

Aca dejo un nuevo LINK, lo subi en otro lado a ver si se ve bien !!!!!!!

Saludos !!!
__________________
Mail: [email protected]

Última edición por colote; 03/09/2008 a las 11:06 Razón: link
  #13 (permalink)  
Antiguo 03/09/2008, 09:18
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Pregunta Respuesta: Problemas con funcion para acumulador !!!

Sí, ya había logrado verlo, ¿has probado con la idea que te dí en el otro mensaje?.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #14 (permalink)  
Antiguo 03/09/2008, 10:59
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Problemas con funcion para acumulador !!!

No tuve tiempo David, ahora me pongo a ver si puedo hacer algo con esa funcion ?
Decime esa funcion la cargo con un evento onChange en <form Onchange="funcion()">, o se trabajo distinto ??

Saludos
__________________
Mail: [email protected]
  #15 (permalink)  
Antiguo 03/09/2008, 11:01
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Problemas con funcion para acumulador !!!

No precisamente, el objetivo de la función es buscar todas las listas que tenemos que empiecen con el nombre que le pasamos por parámetro y luego sumar sus valores. En el caso habría que usarlo en el onchange de la lista.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #16 (permalink)  
Antiguo 03/09/2008, 12:49
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Problemas con funcion para acumulador !!!

Hello David !!!
Bue te cuento que pude hacer andar la funcion, de esta manera,la modifique un poco:
Asi me acumula los costos $ y costos u$s:........
Código PHP:
unction acumula(nombre) {
sumados 0;
acu_pesos 0;
acu_dolar 0;

for (
contador=0sumados<contcontador++) {
   if (
form[nombre contador]) {
      
      
lista form[nombre contador];
      
acu_pesos+= parseFloat(lista.options[lista.selectedIndex].getAttribute("alt1"));
      
acu_dolar+= parseFloat(lista.options[lista.selectedIndex].getAttribute("alt2"));
      
sumados++;

  }
}
document.form.totcos_mp_pesos.value=acu_pesos.toFixed(4);
document.form.totcos_mp_dolar.value=acu_dolar.toFixed(4);

Y la funcion la llamo asi desde el form junto a otras funciones:
Código PHP:
<form id="form" name="form" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" onsubmit="asigna()" onKeyUp="calculo();acumula('lista_');acumulasub()" >
Lo que necesito hacer ahora es hacer lo mismo pero con los datos SUBTOT $ SUBTOT U$S, pero no lo puedo lograr.

Para tomar los datos costo$ y costou$s los tomo asi :
Código PHP:
parseFloat(lista.options[lista.selectedIndex].getAttribute("alt1"));
parseFloat(lista.options[lista.selectedIndex].getAttribute("alt2")); 
Pero no se como tomar los datos SUBTOT $ SUBTOT U$S,
Saludos !!!!

PD:Avisame si necesitas el Codigo Completo !!!!!! y lo subo para que lo veas !!!
__________________
Mail: [email protected]
  #17 (permalink)  
Antiguo 03/09/2008, 12:52
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Pregunta Respuesta: Problemas con funcion para acumulador !!!

Qué bien que lo hayas hecho funcionar .

Ese SUBTOT ¿de dónde habría que obtenerlo?.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #18 (permalink)  
Antiguo 03/09/2008, 13:09
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Problemas con funcion para acumulador !!!

Que rapido David , para como chatear con MSN jejeje !!!!!!

Ese SUBTOT sale de la funcion calculo(); es un calculo que toma a costo y resulta en subtot;
Código PHP:
function calculo(form)
{
val_cos_pesos parseFloat(document.form[c4].value);
val_cos_dolar parseFloat(document.form[c5].value);
val_cant =parseFloat(document.form[c8].value);
val_desp=parseFloat(document.form[c9].value)/100;

val1= (val_cos_pesos*val_cant);
total1=(val1*val_desp)+val1;
document.form[c6].value=total1.toFixed(4);

val2= (val_cos_dolar*val_cant);
total2=(val2*val_desp)+val2;
document.form[c7].value=total2.toFixed(4);

de ahi viene,
Código PHP:
document.form[c6].valuetotal1.toFixed(4);  //este seria subtotpesos 
y
Código PHP:
document.form[c7].valuetotal2.toFixed(4);  //este seria subtotdolar 
Gracias.
__________________
Mail: [email protected]
  #19 (permalink)  
Antiguo 03/09/2008, 13:20
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Problemas con funcion para acumulador !!!

Primero, ¿por qué mejor no llamas a la función calculo y acumula en el evento onchange de los select? .

Segundo, sigo sin entender cuál es el cálculo que debería hacerse para obtener el SUBTOT ya que actualmente solo devuelve NaN.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #20 (permalink)  
Antiguo 03/09/2008, 13:41
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Problemas con funcion para acumulador !!!

Podria ponerlo en el select cuando lo hago con los valores costo$ y costou$s, pero cuando lo hago con subtot, no funciona, porque depende de la funcion calculo, o sea 1º se tiene que ejecutar calculo y despues la otra funcion.

Por casualidad estas usando Firefox ? lo acabo de probar y la funcion acumula no funciona :( que raro !!!

Saludos
__________________
Mail: [email protected]
  #21 (permalink)  
Antiguo 03/09/2008, 13:47
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Problemas con funcion para acumulador !!!

Lo que aún no me has explicado y aún no he entendido es qué valor es el que debería aparecer en SUBTOT .

Sí, estoy usando Firefox aunque al escribir el código también probé con IE y funciona. Voy a probar tu página con IE a ver cómo va.

EDITO: No carga tu página.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #22 (permalink)  
Antiguo 03/09/2008, 14:01
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Problemas con funcion para acumulador !!!

subtot_pesos = (costo_mp_pesos*cant)*desperdicio)+(costo_mp_pesos *cant)

asi calculo el subtotpesos, el de dolar seria con el costo en dolar

que raro que no ande, tengo una pc con windows y en IE6 anda bien

Saludos
__________________
Mail: [email protected]
  #23 (permalink)  
Antiguo 03/09/2008, 14:10
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Problemas con funcion para acumulador !!!

Ya veo que no funciona en Firefox, y es que mira aquí:
Código PHP:
function calculo(form)
{
val_cos_pesos parseFloat(document.form[c4].value);
val_cos_dolar parseFloat(document.form[c5].value);
val_cant =parseFloat(document.form[c8].value);
val_desp=parseFloat(document.form[c9].value)/100;

val1= (val_cos_pesos*val_cant);
total1=(val1*val_desp)+val1;
document.form[c6].value=total1.toFixed(4);

val2= (val_cos_dolar*val_cant);
total2=(val2*val_desp)+val2;
document.form[c7].value=total2.toFixed(4);


¿De dónde estás sacando los valores para c4, c5, c8, c9, c6 y c7?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #24 (permalink)  
Antiguo 03/09/2008, 14:24
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Problemas con funcion para acumulador !!!

de esta funcion:
Código PHP:
function listaSeleccionada(lista) { 
arr=lista.name.split("_");
c1="code_"+arr[1];
c2="name_"+arr[1];
c3="unid_"+arr[1];
c4="cos_mp_pesos_"+arr[1];
c5="cos_mp_dolar_"+arr[1];
c6="sub_mp_pesos_"+arr[1];
c7="sub_mp_dolar_"+arr[1];
c8="cant_mp_"+arr[1];
c9="desperdicio_"+arr[1];

document.form[c1].value lista.options[lista.selectedIndex].value
document.form[c2].value lista.options[lista.selectedIndex].text
document.form[c3].value lista.options[lista.selectedIndex].getAttribute("alt");
document.form[c4].value lista.options[lista.selectedIndex].getAttribute("alt1");
document.form[c5].value lista.options[lista.selectedIndex].getAttribute("alt2"); 
O sea esta funcion lo que hace es mostrar en los inputs los datos que vienen de la base de datos, yo ingreso cantidad y desperdicio, el resto se calcula solo, o sea los subtotales de pesos y dolares, y despues lo que tengo que hacer es sumar todos los subtotales segun la cantidad de filas que haya agregado.

David, me estoy llendo, mañana sigo con esto, ando medio enquilombado, mas vale despejar la mente y arrancar mañana de nuevo !!!
Nos vemos Mañana !!!!

PD, si tenes alguna mejor idea para esa funcion calculo y acumular, escucho consejos !!!!

Gracias
__________________
Mail: [email protected]
  #25 (permalink)  
Antiguo 03/09/2008, 14:26
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Problemas con funcion para acumulador !!!

El problema es que esas variables son de alcance de función, así que no valen para la otra función.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #26 (permalink)  
Antiguo 04/09/2008, 04:41
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Problemas con funcion para acumulador !!!

Ahhhhhh, y si esas variables no me sirven como se podria hacer ????

Saludos
__________________
Mail: [email protected]
  #27 (permalink)  
Antiguo 04/09/2008, 07:34
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Problemas con funcion para acumulador !!!

Puedes, o volver a obtener su valor en la función calculo, o hacer que su alcance sea mayor definiéndolas fuera de la función:
Código PHP:
var c1="";
var 
c2="";
var 
c3="";
var 
c4="";
var 
c5="";
var 
c6="";
var 
c7="";
var 
c8="";
var 
c9=""
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #28 (permalink)  
Antiguo 04/09/2008, 08:43
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Problemas con funcion para acumulador !!!

Hola david, mira, estoy tratando de usar la logica pero no me da resultado.
Con esta funcion, veo los subtot$ que se van calculando, en un alert.
Código PHP:
function acumula() {
  
sub_pesos=parseFloat(document.form[c6].value);
  
alert(sub_pesos);

Bueno, entonces quiero acumular esos datos en una variable, de esta forma, pero no funciona.
Código PHP:
function acumula() {
  
sub_pesos+=parseFloat(document.form[c6].value);
  
alert(sub_pesos);

Me esta volviendo loco esta funcion jejejejeje !!!!!

Gracias

Ahi subo el ejemplo para que veas lo del alert !!!!
LINK
__________________
Mail: [email protected]
  #29 (permalink)  
Antiguo 04/09/2008, 09:06
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Problemas con funcion para acumulador !!!

Para empezar, me equivoqué con lo de las variables ya que no estás usando var, así que no son de alcance en la función, sino pertenecen al documento.

Segundo, sigo sin entender lo que quieres hacer, ya que los valores de c1, c2, etc. los obtenemos al seleccionar un elemento de la lista, mientras que acumula() está tomando esos valores cuando no debería ser así, lo correcto sería que esos valores los tomara del input en el que se presionó la tecla, ¿no te parece?.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #30 (permalink)  
Antiguo 04/09/2008, 10:59
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Problemas con funcion para acumulador !!!

Hola David, vamos a empezar de nuevo con lo que necesito hacer.
Pongo una imagen para que se entienda mejor !!!


Los pasos serian por ejemplo:
Selecciono un item de la lista, ingreso cantidad y desperdicio, se calcula SUBTOT$ y SUBTOTu$s en la funcion calculo(), eso anda bien. Cuando termino de ingresar el desperdicio , se muestran los resultados de SUBTOT$ y SUBTOTu$s.
2º Selecciono otro item, ingreso cantidad y desperdicio, se calcula SUBTOT$ y SUBTOTu$s de la funcion calculo(), que funciona bien, Termino de ingresar el desperdicio y me vuelve a calcular SUBTOT$ y SUBTOTu$s de la fila 2.

Lo que necesito que haga la funcion acumula(), es que me valla sumando en una variable los SUBTOT$ y SUBTOTu$s
para mostrarlos dentro del input con titulo Sub Total Costo Materia Prima.

Viendo el ejemplo de la foto seria SUBTOT$ 29.2201 y SUBTOTu$s 9.7399.

Cita:
lo correcto sería que esos valores los tomara del input en el que se presionó la tecla, ¿no te parece?.
Lo correcto seria tomar los valores de SUBTOT$ y SUBTOTu$s de cada fila y sumarlos

Saludos !!!

PD. Si no fui claro avisame.
__________________
Mail: [email protected]

Última edición por colote; 04/09/2008 a las 11:00 Razón: edit
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 02:13.