Newsgroup: it.comp.lang.javascript
Titolo: associare due variabili in una form

Salve e scusate la domanda banale, ma sono proprio un niubbetto in
javascript.Non mi offendete ma non so proprio dove cercare aiuto se non
qui.
Vengo al dunque: ho una form che mi restituisce un valore finale (la
rata di un mutuo). Il problema è che non sono in grado di cambiare il
valore della variabile "tasso", la quale dovrebbe variare a seconda del
valore della variabile "durata" che si sceglie precedentemente.
Es., se "durata" è "10", "tasso" deve essere 5.20 (e fin qui ci sono),
ma se "durata" è "20" allora il valore di "tasso" deve diventare
"5.43".
Come dirglielo?
Grazie a tutti.
Questo è il codice:
<html>
<head>
<script type="text/javascript">
//dichiarazione varibile
rata = "";
//funzione calcolo rata
function CalcolaRata(m,n,i,k)
    {
//lettura dati
      m = parseInt(m);
      n = parseInt(n);
      i = parseFloat(i)/100;
      k = parseInt(k);
//numero di rate
      kn = k*n;
//interesse del periodo
      ik = i/k;
//calcolo della rata costante
      rata = m*ik/(1-Math.pow(ik+1,-k*n));
      return Math.round(rata*100)/100 //arrotondo risultato
 }
</script>
</head>
<body>
<p><strong>Mutuo tasso fisso</strong></p>
<form name="rata">
<p>Mutuo: <input type="text" name="mutuo" size="10"
value="10000">&euro;</p>
<p>Durata: 	<select name="durata">  	<option value="10">10
										<option value="15">15
										<option value="20">20
										<option value="25">25
										<option value="30">30
										</option> </select></p>
<input type="hidden" name="tasso" value="5.20">
<p>Periodicità: <select name="periodo"> <option value="12">mensile
										<option value="2">semestrale
										<option value="1">annuale
										</option> </select></p>
<p><input type="button" value=" Calcola "
onclick="c_rata.value=CalcolaRata(mutuo.value,durata.value,tasso.value,periodo.value);"></p>
</p>
<p>Rata: <input type="text" name="c_rata" id="c_rata" size="10"
value="">&euro;</p>
</p>
</form>
</body>
</html>

 Grazie a tutti.
indipendentemente dal codice, occorre vedere il problema alla fonte,
cioè prima del codice.
La variabile "tasso" è frutto di un calcolo? Esiste una formula per
calcolarla? Oppure è frutto di una comparazione tabellare?
A seconda della risposta si crea facilmente il codice.

 A seconda della risposta si crea facilmente il codice.
Grazie mille per l'interessamento...

 se "durata" = 10  "tasso" = 5.50
Manca una variabile, non si può costruire una tabella. Come si
discrimina il valore in questo esempio? Il criterio non è completo.
Non è un problema di codice, bisogna definire bene il criterio poi si
passa al codice.
Prova una definizione descrittiva.

 Prova una definizione descrittiva.
Hai ragione e mi scuso per l'approssimatezza, mi sono accorto solo
dalla tua risposta di avere riportato dei valori sbagliati. Cerco di
essere più preciso. Devo creare un modulo per calcolare la rata
mensile di un mutuo a partire da due valori che si scelgono: l'importo
da finanziare e la durata del mutuo stesso. Ed è quello che fa il
codice che ho postato nel primo messaggio.
Passando al mio problema, il concetto è molto semplice: il "tasso" di
interesse per un mutuo non è unico bensì direttamente proporzionale
alla "durata". In altre parole, più anni di mutuo pago, più aumenta
il tasso di interesse che una banca applica (purtroppo!).
I valori precisi, ad oggi, sono questi:
-------------------------------------------------------
se "durata" = 10 anni  allora "tasso" = 5.20%
se "durata" = 15 anni  allora "tasso" = 5.20%
-------------------------------------------------------
se "durata" = 20 anni allora "tasso" = 5.45%
se "durata" = 25 anni allora "tasso" = 5.45%
-------------------------------------------------------
se "durata" = 30  anni allora "tasso" = 5.50%
------------------------------------------------------
Come si può vedere per "durata" 10 e 15 il "tasso" di interesse non
cambia. Ma poi si alza per 20 e 25, e aumenta ancora se si chiedono 30
anni di mutuo. In pratica ci sono tre scaglioni. Il problema che cerco
di risolvere è proprio questo: a seconda della durata che si sceglie
bisogna applicare un tasso di interesse diverso. Nel codice che ho
postato all'inizio, invece,  c'è solo un valore standard per il
"tasso", che è 5.20, il quale viene applicato a prescindere dalla
"durata", dando così dei risultati sbagliati nel caso si scelga una
durata superiore a 15 anni.
Altro problema è poi che questi tassi cambiano mensilmente seguendo
gli andamenti dei mercati finanziari, ma credo che per questo non si
possa fare altro che aggiornarli di volta in volta nella formula...
Spero di essermi spiegato e grazie ancora per la pazienza.
Ciao Maurizio

 ------------------------------------------------------
Adesso le informazioni sono sufficienti, le riassumo seguendo il
formalismo matematico:
nota: il separatore decimale è un punto, la virgola è il separatore
di lista in accordo al formalismo javascript
d = durata
t = tasso %
d > 0, d <= 15 -> t = 5.2
d > 15, d <= 25 -> t = 5.45
d > 25, d <= 30 -> t = 5.5
crea tre array che seguano il seguente criterio
a_1 = limite inferiore non incluso della durata
a_2 = limite superiore incluso della durata
a_3 = valore corrispondente del tasso fra i due limiti
la funzione:
function calcolatasso(d){
a_1 = [0,15,25];
a_2 = [15,25,30];
a_3 = [5.2,5.45,5.5];
for (var x=0;x<a_1.length;x++) {
if ( (d > a_1[x]) && (d <= a_2[x]) ) {return a_3[x]}
}
}
Quando il criterio cambia, basta modificare gli array.
Naturalmente si può creare qualcosa di più sofisticato che però
richiede tempo e pazienza.
La pagina di prova puoi vederla al seguente indirizzo:
www.oreste.parlatano.com/tasso/tasso.html

Perfetto, grazie infinite, ecco la mia pagina di test:
http://www.asdprocalcio.it/calcola_rata.html
Se posso però, ti chiedo un'altra cosa. Dovrei far variare
ulteriormente il valore "tasso"
rispetto ad un'altra variabile, che ho messo nella pagina di test come
"tipologia" e che può assumere tre valori: "fisso", "costante" e
"variabile".
In pratica, per ognuno di questi tre, cambiano i valori di "tasso", che
perciò in totale può assumere nove valori diversi.
Ecco la tabella:
         Fisso                  Variabile               Costante
---------------------------------------------------------------------------
10  ->        4.95                     4.60                      4.85
anni
----------------------------------------------------------------------------
15/20 ->      5.28                       4.80                   5.05
anni
----------------------------------------------------------------------------
25/30 ->    5.57                        5.10                    5.30
anni
Per adesso funziona per i valori del "fisso". Come si può aggiungere
la variabile "tipologia" al mio codice? In sostanza si dovrebbe sempre
intervenire sul valore di "tasso". Non vorrei abusare della cortesia di
chi mi aiuta ma ringrazio comunque in anticipo.