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