Javascript per calcolo sconti

frankiedeguello

Utente Attivo
24 Mag 2005
42
0
0
48
Ciao a tutti!

ho un problema con una pagina stile carrello:

nella pagina campaiono i prodotti scelti dal cliente, questi prodotti vengono inseriti in un database access, nella pagina dovrei calcolare gli eventuali sconti che il cliente richiede e così ho fatto una funzione:

function sconti()
{

var p = document.modulo.importo.value;
var ps = document.modulo.importoscontato.value;
var sc1 = document.modulo2.scon1.value;
var sc2 = document.modulo2.scon2.value;
var sc3 = document.modulo2.scon3.value;

if (sc1 == "")
{
ps = p;
}
else
{
sconto1 = Number(p) * ((100-Number(sc1))/100);
if (sc2 == "")
{
ps = sconto1;
}
else
{
sconto2 = Number(sconto1) * ((100-Number(sc2))/100);
if (sc3 == "")
{
ps = sconto2;
}
else
{
sconto3 = Number(sconto2) * ((100-Number(sc3))/100);
ps = sconto3;
}
}
}
document.modulo.importoscontato.value = ps;
}


la funzione suddetta va bene solo quando nel carrello è presente un prodotto, da due in avanti restituisce un errore, infatti i textfield "importo" e "importoscontato" quando si inserisce un secondo prodotto vengono "sdoppiati" e penso che entrino in conflitto tra di loro per via dei nomi uguali...

come posso risolvere questo inconveniente?

grazie a presto :byebye:
 
Vediamo di sistemarlo...provalo così:

function sconti() {

var p = document.modulo.importo.value;
var ps = document.modulo.importoscontato.value;
var sc1 = document.modulo2.scon1.value;
var sc2 = document.modulo2.scon2.value;
var sc3 = document.modulo2.scon3.value;

if (sc1 == "") {
ps = p;
}else{
sconto1 = Number(p) * ((100-Number(sc1))/100);
}
if (sc2 == ""){
ps = sconto1;
}else{
sconto2 = Number(sconto1) * ((100-Number(sc2))/100);
}if (sc3 == ""){
ps = sconto2;
}else{
sconto3 = Number(sconto2) * ((100-Number(sc3))/100);
ps = sconto3;
}
}
}
document.modulo.importoscontato.value = ps;
}
 
Ciao ragazzi, grazie per le risposte, il codice javascript che ho scritto funziona, ma lo fa solo con un prodotto, da due in avanti da errore, gli if annidati dovrebbere essere giusti perchè con un prodotto tutto va a meraviglia, penso che dovrei "contare" i campi presenti, infatti se inserisco un nuovo prodotto i textfield importo e importoscontato si "sdoppiano" ed entrano in conflitto, non so bene come risolvere, sto provando una funzione che conta i campi importo e importoscontato e che poi controlla la funzione sconti(), ma ancora non riesco a risolvere...

a presto

Frank
 
Il ciclo eccolo ma continua a funzionare solo con un record! :hammer:

function controlla()
{
var impor = document.modulo.importo;
var imporsc = document.modulo.importosc;


if (impor.length == undefined)
{ // un solo elemento
sconti(impor, imporsc);
}
else
{ // più elementi, fai un loop
for(var ii = 0; ii <= impor.length; ii++)
{
sconti(impor[ii], imporsc[ii]);
}
}
}

function sconti(impor, imporsc)
{

var p = impor.value;
var ps = imporsc.value;
var sc1 = document.modulo2.s1.value;
var sc2 = document.modulo2.s2.value;
var sc3 = document.modulo2.s3.value;

if (sc1 == "")
{
ps = p;
}
else
{
sconto1 = Number(p) * ((100-Number(sc1))/100);
if (sc2 == "")
{
ps = sconto1;
}
else
{
sconto2 = Number(sconto1) * ((100-Number(sc2))/100);
if (sc3 == "")
{
ps = sconto2;
}
else
{
sconto3 = Number(sconto2) * ((100-Number(sc3))/100);
ps = sconto3;
}
}
}
imporsc.value = ps;

}


... :incazz:
 
Risolto!

Il codice andava bene era il ciclo dei record prodotti in asp che era sbagliato, includeva anche il form cosicché si creavano tanti form quanti erano i prodotti ... :hammer:

grazie a tutti per la disponibilità :) :byebye:
 

Discussioni simili