Non voglio farmi odiare.. ma non riesco davvero , ed è un pomeriggio che sto qui!
Vi posto il codice: <script>
io avrei un imput type che "legge" il quantitativo immesso dall'utentecodice:// Funzione che crea un array contenente n elementi function MakeArray(n) { this.length = n; for(var i = 1; i <= n; i++) this[i] = 0; return this } // Funzione che calcola l'IVA del 19% e la somma al totale function tassalo(num) { // Se l'iva e' selezionata (checked) la calcolo if(num) { if(document.preventivo.TASSE.checked) { document.preventivo.quantoiva.value=35; } else document.preventivo.quantoiva.value=0; } // A questo punto faccio il totale. var temp=0; if(document.preventivo.costotot.value.length != 0) { temp+=parseFloat(document.preventivo.costotot.value); } if(document.preventivo.quantoiva.value.length != 0) { temp+=parseFloat(document.preventivo.quantoiva.value); } document.preventivo.costototiva.value=temp; } // Questa funzione fa la somma del costo dei prodotti // che sono stati selezionati. function calcola(sel) { // Crea un array in cui metto i prezzi passati come argomenti. var Prezzi_Array = new MakeArray(calcola.arguments.length); for(var i=1; i<calcola.arguments.length; i++) { Prezzi_Array[i-1] = parseInt(calcola.arguments[i]); } // Prendo l'ultimo carattere del nome dell'elemento che ha // chiamato la funzione (quanti0, quanti1 daranno 0, 1 ecc.) // per sapere quale selettore � stato cambiato. var line=sel.name.charAt(sel.name.length-1); // Ora se il quantiX di tale linea ha una lunghezza, significa che c'e' // un valore scritto dentro. Per accaderci si usa "quanti"+line che // ci dara' quanti0, quanti1 ecc. if(document.preventivo["quanti"+line].value.length != 0) { // Controllo che sia stato scritto un numero (se non � un numero // risultera' un NaN, ovvero Not a Number), e che sia diverso da // zero. Se non � un numero, visualizzo una finestra di alert. var quanti=parseInt(document.preventivo["quanti"+line].value); if((quanti == 0) || isNaN(quanti)) { alert("La quantita' alla linea "+(++line)+" non e' un numero!"); return; } var pprez=0; // Trovo il prezzo del prodotto selezionato. pprez = Prezzi_Array[document.preventivo["prodotto"+line].selectedIndex]; // Controllo che sia stato selezionato qualcosa, in caso contrario // visualizzo una finestra di alert con l'errore. if((pprez == 0) || isNaN(pprez)) { alert("Il prodotto alla linea "+(++line)+" non e' stato scelto!"); return; } // Scrivo il prezzo singolo e il totale document.preventivo["prodprezzo"+line].value = pprez; document.preventivo["prodtot"+line].value = eval(pprez*quanti); } var i = 0; var total = 0; // Calcolo il costo totale sommanto i totali dei singoli prodotti while(document.preventivo["prodtot"+i]) { if(document.preventivo["prodtot"+i].value.length != 0) { total+=parseInt(document.preventivo["prodtot"+i].value); } i++; } document.preventivo.costotot.value = total; // Calcoliamo l'iva eventuale e il totale ivato. tassalo(total); }
Quindi la variabile che andrebbe moltiplicata per 35 dovrebbe essere "quanti0", giusto? però se metto che document.preventivo.quantoiva.value=35*quanti0 non mi funziona più il comando; se invece lo metto =(35*'quanti0') mi dà come risultato NaNcodice:<INPUT TYPE=TEXT NAME="quanti0" SIZE=3 onChange='calcola(this, "150");'>

Rispondi quotando