Foros del Web » Programando para Internet » Javascript »

Sobre recursividad en funciones

Estas en el tema de Sobre recursividad en funciones en el foro de Javascript en Foros del Web. Buenos días: Es mi primer post aquí. Espero que me puedan ayudar. Estoy bastante cansada y por eso temo que no puedo encontrar la solución ...
  #1 (permalink)  
Antiguo 26/03/2008, 15:12
 
Fecha de Ingreso: marzo-2008
Mensajes: 82
Antigüedad: 16 años, 1 mes
Puntos: 0
Sobre recursividad en funciones

Buenos días:
Es mi primer post aquí. Espero que me puedan ayudar. Estoy bastante cansada y por eso temo que no puedo encontrar la solución a mi problema. Se trata de lo siguiente. Tengo un formulario que requiere validación y procesamiento de datos en algunos campos. Si se ingresan los datos en orden no hay problema pues calcula todo perfectamente bien.

El problema viene cuando se cambia el primer dato dejando los demás como estan. Ahí simplemente no funciona. Calcula el valor llamado TARA pero de ahí no pasa, no actualiza los valores en Neto, Total y S/.
No obstante si luego vuelvo a poner el valor original en el campo JABAS, me calcula todo COMO si hubiera mantenido en memoria el anterior valor. Si por ejemplo en JABAS ingresaba 6 (valor original) y luego de ingresar todos los valores, decido cambiar 6 por 10, el único campo que se actualiza es TARAS, pero el resto no. Ahora, si como paso siguiente cambio el 10 por el 6, entonces si actualiza todo PERO con el valor de 10, no de 6.

Sin embargo si cambio los datos en los demás campos normal, recalcula. Este es el script:

function calcular(num)
{
if (num==1) //ROJAS
{
//inicializando variables
var valorJabasRojas;
var valorBrutoRojas;
var valorNumDevolucionesRojas;
var valorDevolucionesRojas;
var valorPrecioRojas;
var valorTaraRojas;
var valorTotalRojas;
var original1TR;
var resultado1TR;
var original1TNR;
var valorNetoRojas;
var original2TNR;
var valorTotalRojas;
var originalS1;
var resultadoS1;

//capturando valores que se ingresan
valorJabasRojas=document.formulario.jabasR.value;
valorBrutoRojas=document.formulario.brutoR.value;
valorNumDevolucionesRojas=document.formulario.nume roR.value;
valorDevolucionesRojas=document.formulario.devoluc ionesR.value;
valorPrecioRojas=document.formulario.precioR.value ;

//capturando valores que se calculan
valorTaraRojas=document.formulario.taraR.value;
valorTotalRojas=document.formulario.totalR.value;

//validando devoluciones
if (valorDevolucionesRojas > 0)
{
if (valorNumDevolucionesRojas=="")
{
alert("No se puede ingresar peso de Devoluciones sin haber ingresado las unidades primero.");
document.formulario.devolucionesR.value=0;
formulario.numeroR.focus();
return;
}
}

//calculando TARA (# de jabas por valor de jabas)
original1TR=parseFloat(valorJabasRojas*<%= varValorTara %>);
resultado1TR=Math.round(original1TR*100)/100;
document.formulario.taraR.value=resultado1TR;

//calculando NETO (bruto menos tara)
original1TNR=parseFloat(valorBrutoRojas - valorTaraRojas);
valorNetoRojas=Math.round(original1TNR*100)/100;
if (valorNetoRojas < 0)
{
alert("El valor NETO no puede ser un número negativo.n\Por favor rectifique los valores ingresados.");
formulario.brutoR.focus();
return;
}
else
{document.formulario.netoR.value=valorNetoRojas;}

//calculando TOTAL (neto menos peso de devoluciones)
original2TNR=parseFloat(valorNetoRojas - valorDevolucionesRojas);
valorTotalRojas=Math.round(original2TNR*100)/100;
document.formulario.totalR.value=valorTotalRojas;

//calculando SOLES (total por precio)
originalS1=parseFloat(valorPrecioRojas*valorTotalR ojas);
resultadoS1=Math.round(originalS1*100)/100;
document.formulario.solesR.value=resultadoS1;
}
}

El formulario pueden verlo en esta dirección

http://www.mastersdesigners.com/pruebas/calculo/


Al costado de cada campo estan los valores de prueba para que tengan una guía así como los calculos que se realizan que como ven no son nada del otro mundo.

Por favor necesito ayuda urgente porque no debería de usar el servidor de la empresa para esta cosas aún (estan en rediseño) pero como les dije, estoy cansada, una semana agotadora y tengo hecho pure el cerebro, así que seguramente es una cosa de marras y no logro darme cuenta.

Muchas pero muchas gracias
Un saludo desde el Perú
MCS
  #2 (permalink)  
Antiguo 26/03/2008, 15:47
Avatar de Mosiah  
Fecha de Ingreso: mayo-2002
Ubicación: Vitoria - Madrid
Mensajes: 229
Antigüedad: 22 años
Puntos: 0
Re: Sobre recursividad en funciones

Hola,

yo por lo que veo es que al cambiar el Javas:
1- Recuperas todos los valores del formulario
2- Recalculas Tara con el nuevo valor
3- Recalculas Neto, pero con el valor del formulario, no con el recalculado, y por eso no te cambio.

y con el resto de valores calculados pasa lo mismo, los recalculas con los valores ya existentes en el formulario, no con los recalculados.

Salu2
  #3 (permalink)  
Antiguo 26/03/2008, 18:51
 
Fecha de Ingreso: marzo-2008
Mensajes: 82
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Sobre recursividad en funciones

¿no digo?, sabía que era una cosa de marras...... gracias mil...... ahora tengo un sueño bárbaro pero acabo de probarlo y funciona, sólo que salta la alerta de número negativo de Neto pero eso es más simple de solucionar me parece......

Muchas gracias en verdad, en serio gracias
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 01:20.