Nell'esercizio originale, che riporto per primo, si scrivono tre numeri in tre caselle di testo e in una quarta casella di testo si ottiene, regolarmente, la loro somma, usando l'evento onchange.
Ho modificato l'esercizio, riportandolo per secondo, inserendo il tag <fieldset> nel >form> e, di conseguenza, nella funzione tot() ho modificato la riga:
document.modulo.totale.value=totale;
in questa: document.modulo.fieldset1.totale.value=totale;
cioè ho inserito il nome della <fieldset> nella dotnotation, ma nella casella del totale non viene scritto nulla.
Allora ho commentato la riga //document.modulo.fieldset1.totale.value=totale;
e ho provato a raggiungere la casella del totale con le collections:
document.forms[0].elements[4].value=totale;
ma questa volta nella casella del totale viene scritto NaN, eppure la variabile totale è numerica, perché è stata forzata a numerica moltiplicandola per 1.
Desidererei un aiuto per sapere il perché. Grazie
lanvoel
esercizio originale
esercizio modificatocodice:<HTML> <HEAD> <TITLE>onchange</TITLE> <SCRIPT TYPE="text/javascript"> //Funzione totalizzatrice dei valori inseriti function tot() { var totale=0; for(i=0;i<3;i++) //moltiplicando per 1 si "forza" a numerico totale+=document.forms[0].elements[i].value*1; document.modulo.totale.value=totale; } function foc() { document.modulo.num1.select() document.modulo.num1.focus() } function canc() { for(i=0;i<4;i++) document.forms[0].elements[i].value=""; } </SCRIPT> </HEAD> <BODY> <H3>FORM. Campo INPUT. Evento onChange</H3><HR> <FORM NAME="modulo"> 1° cifra:<INPUT TYPE="text" NAME="num1" size="10" onChange="tot()" STYLE="text-align: right"><BR> 2° cifra:<INPUT TYPE="text" NAME="num2" size="10" onChange="tot()" STYLE="text-align: right"><BR> 3° cifra:<INPUT TYPE="text" NAME="num3" size="10" onChange="tot()" STYLE="text-align: right"><BR> Totale: <INPUT TYPE="text" NAME="totale" SIZE="15" READONLY onFocus="foc()" STYLE="text-align: right"> <INPUT TYPE="button" VALUE="canc" onclick="canc()"> </form> </FORM> </BODY> </HTML>
codice:<HTML> <HEAD> <TITLE>onchange</TITLE> <SCRIPT TYPE="text/javascript"> //Funzione totalizzatrice dei valori inseriti function tot() { var totale=0; for(i=0;i<3;i++) //moltiplicando per 0 si "forza" a numerico totale+=document.forms[0].elements[i].value*1; //document.modulo.fieldset1.totale.value=totale; document.forms[0].elements[4].value=totale; } function foc() { document.modulo.num1.select() document.modulo.num1.focus() } function canc() { for(i=0;i<4;i++) document.forms[0].elements[i].value=""; } </SCRIPT> </HEAD> <BODY> <center> <H3>FORM. Campo INPUT. Evento onChange</H3><HR> <FORM NAME="modulo"> <fieldset name="fieldset1" style="background-color:'cyan'; width:300px; height:160px"> <legend> somma di 3 numeri</legend> <br> 1° numero:<INPUT TYPE="text" NAME="num1" size="10" onChange="tot()" STYLE="text-align: right"><BR> 2° numero:<INPUT TYPE="text" NAME="num2" size="10" onChange="tot()" STYLE="text-align: right"><BR> 3° numero:<INPUT TYPE="text" NAME="num3" size="10" onChange="tot()" STYLE="text-align: right"><BR> Totale: <INPUT TYPE="text" NAME="totale" SIZE="15" READONLY onFocus="foc()" STYLE="text-align: right"> <INPUT TYPE="button" VALUE="canc" onclick="canc()"> </fieldset> </FORM> </center> </BODY> </HTML>

Rispondi quotando