|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: May 2008
Messaggi: 74
|
[JAVASCRIPT] non riesco a far funzionare questo script
Ho iniziato a studiare Javascript da 5/6 giorni e sto facendo un esercizio.
In pratica dovrei creare degli oggetti che si occupano di controllare i campi di una semplice form. * L'oggetto TextField si occupa di controllare se la dimensione del nome inserito in una label è corretta * L'oggetto NumericField si occupa di controllare se le 2 età da inserire nella form sono entro un certo range * L'oggetto LessThan si occupa di controllare che l'età attuale sia minore dell'età al momento del conseguimento della patente di guida Ciascuno di questi oggetti ha un metodo isValid e un metodo explain che si occupano, rispettivamente, di effettuare il controllo vero e proprio e di generare un messaggio da inserire poi in un alert. Questi oggetti vengono crati all'interno della funzione controlla che ho definito nella <head> del file .html (gli oggetti invece sono in un file .js) Ecco il codice del file html: Codice:
<html> <head> <title>Esercizio j03</title> <script type="text/JavaScript" src="esj03.js"></script> <script type="text/JavaScript"> function controlla() { var n = document.forms[0].elements[0].value; var e =document.forms[0].elements[1].value; var p = document.forms[0].elements[2].value; var msg = ""; var control_n = new TextField(n, 1, 25); var control_e = new NumericField(e, p, 1, 99); var control_rel = new LessThan(e, p); if (!control_n.flag_n()) { msg += control_n.msg_n(); document.forms[0].elements[0].reset(); } if (!control_e.flag_e()) { msg += control_e.msg_e(); document.forms[0].elements[1].reset(); document.forms[0].elements[2].reset(); } if (!control_rel.flag_rel()) { msg += control_rel.msg_rel(); document.forms[0].elements[1].reset(); document.forms[0].elements[2].reset(); } if (msg != "") { alert(msg); } } </script> </head> <body> <form method="post" action="#"> <p>Nome:</p><input type="text" name="nome" size="30" /><br /> <p>Età:</p><input type="text" name="eta" size="3" /><br /> <p>Età al conseguimento della patente di guida:</p><input type="text" name="patente" size="3" /><br /><br /> <input type="button" value="Invia" onclick="controlla();" /> <input type="reset" value ="Reset" /> </form> </body> </html> Codice:
//classe TextField function TextField(nome, minString, maxString) { this.nome = nome; this.minString = minString; this.maxString = maxString; this.flag_n = isValid_n; this.msg_n = explain_n; } function isValid_n() { if ((this.nome.length < this.minString) || (this.nome.length > this.maxString)) { return false; } else { return true; } } function explain_n() { if ((this.nome.length < this.minString) || (this.nome.length > this.maxString)) { return "\nAttenzione! Errore nel campo 'nome'"; } else { return ""; } } //classe NumericField function NumericField(eta, patente, min_num, max_num) { this.eta = eta; this.patente = patente; this.min_num = min_num; this.max_num = max_num; this.flag_e = isValid_e; this.msg_e = explain_e; } function isValid_e() { if ((Object.isUndefined(this.eta) || Object.isUndefined(this.patente)) { return false; } else { if ((this.eta < this.min_num) || (this.eta > this.max_num)) || ((this.patente < this.patente) || (this.patente > this.patente))) { return false; } else { if (this.patente < 16) { return false; } else { return true; } } } } function explain_e() { if ((Object.isUndefined(this.eta) || Object.isUndefined(this.patente)) { return "\nAttenzione! Errore nei campi 'eta'"; } else { if ((this.eta < this.min_num) || (this.eta > this.max_num)) || ((this.patente < this.patente) || (this.patente > this.patente))) { return "\nAttenzione! Errore nei campi 'eta'"; } else { if (this.patente < 16) { return "\nAttenzione! Errore nei campi 'eta'"; } else { return ""; } } } } //classe LessThan function LessThan(eta, patente) { this.eta = eta; this.patente = patente; this.flag_rel = isValid_rel; this.msg_rel = explain_rel; } function isValid_rel() { if ((Object.isUndefined(this.eta) || Object.isUndefined(this.patente)) { return false; } else { if (this.eta < this.patente) { return false; } else { return true; } } } function explain_rel() { if ((Object.isUndefined(this.eta) || Object.isUndefined(this.patente)) { return "\nAttenzione! L'eta' al conseguimento della patente è minore di quella attuale"; } else { if (this.eta < this.patente) { return "\nAttenzione! L'eta' al conseguimento della patente è minore di quella attuale"; } else { return ""; } } } Altra cosa: non so se è corretto usare Object.Undefined per verificare che il campo della form sia inserito o no. E' probabile che ci siano molti errori sintattici e non solo, insomma è probabile che abbia fatto molto cagate , ma d'altronde sono a digiuno di javascript Ultima modifica di Tzor : 29-03-2009 alle 13:55. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 558
|
ora ho parecchio da fare quindi ti do un consiglio al volo per debuggare il codice: installati l'estensione firebug di firefox che ti fornisce spiegazioni degli errori javascript nella pagina così puoi essere sicuro che non ci sono errori di sintassi o roba del genere. Se ancora non ti funziona quando ho 10 min liberi do un'occhiata al codice
![]() |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: May 2008
Messaggi: 74
|
Non sono ancora riuscito a trovare il perchè non funziona, sembra una missione impossibile
![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:34.