Per prima cosa, prova a scrivere "input" minuscolo, perché la somma risulta essere sempre 0.
Altro errore: tanto il nome quanto il valore di un campo di testo sono in teoria stringhe, quindi andrebbero entrambi convertiti con parseInt.
In sintesi, questa è la riga da modificare:
Codice:
if(e.childNodes[i].nodeName == 'input')
somma += parseInt(e.childNodes[i].name)*parseInt(e.childNodes[i].value);
Quanto alla "conversione", devi avere ben chiari quali sono i "tassi di conversione" tra una moneta e l'altra, e in quale moneta siano i prezzi unitari che hai sul modulo. Da come scrivi sopra sembra che sia:
- 1 bronzo = 10 ottone
- 1 argento = 100 ottone (10 bronzo)
- 1 oro = 1000 ottone (10 argento)
e che tutti i prezzi unitari siano in ottone. Con queste ipotesi, una volta che hai calcolato la somma, procedi così:
Codice:
var ottone = somma % 10;
var bronzo = Math.floor (somma / 10);
var argento = Math.floor (bronzo / 10);
bronzo = bronzo % 10;
var oro = Math.floor (argento / 10);
argento = argento % 10;
document.write ('Hai speso: ' + oro + ' oro, ' + argento + ' argento, ' + bronzo + ' bronzo, ' + ottone + ' ottone');
Se così non fosse, metti le conversioni corrette sulla falsa riga di questa...
Stammi bene...
Sposto la discussione, visto che è dall'inizio che ha deviato su JavaScript...