Non voglio farmi odiare.. ma non riesco davvero , ed è un pomeriggio che sto qui!
Vi posto il codice: <script>
codice:
// 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);
}
io avrei un imput type che "legge" il quantitativo immesso dall'utente
codice:
<INPUT TYPE=TEXT NAME="quanti0" SIZE=3 onChange='calcola(this, "150");'>
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 NaN