|
Rank: Member
Iscritto dal : 8/7/2004 Posts: 1
|
ciao a tutti, in un form ho necessità di correlare tre caselle che mi restituiscano il valore di una somma a seconda del verificarsi di specifiche condizioni. - ho una casella1 a menù con valori SI/NO - ho una casella2 (text) in cui insere un numero intero da 1 a 10 - ed una casella3 che mi restituisce il valore di un'espressione secondo la selezione della casella1. la cosa che devo fare è per esempio: se casella1=SI e casella2=1 deve essere inserito un valore fisso, per tutti gli altri valori di casella2 applico l'espressione (valoreCasella2+40) e idem nel caso che la scelta sia:NO (ma con diversa espressione). dovrei quindi impostare un ciclo if, qualcuno può aiutarmi? un grazie di cuore a tutti.
|
|
|
|
|
Rank: AiutAmico
Iscritto dal : 9/20/2004 Posts: 1,597
|
Assumo che tu abbia gia recuperato le variabili dal tuo form (tramite post o altro). Questo dovrebbe funzionare... (SCRIPT TYPE="text/javascript") (!-- var casella1; var casella2; var casella3; if (casella2==1) { casella3="Valore fisso"; } else () { if (casella1="SI") { casella3=casella2+40; } else () { casella3="altra espressione" } } // --) (/SCRIPT) Edited by - dead on 12/06/2004 14:13:06 Sono cosi avanti che quando guardo indietro vedo il futuro.
|
|
Rank: Member
Iscritto dal : 8/7/2004 Posts: 1
|
ciao dead, ho fatto una prova col codice che mi hai indicato ma non funziona, e cessano di funzionare anche le altre funzioni che precedono questa. avevo usato già qualcosa di simile, per la precisione: function calcola() { var profilo,nucleo,costonucleo,valorefisso1,valorefisso2; valorefisso1=parseInt("620"); //valore fisso valorefisso2=parseInt("725"); profilo=document.carica.profilo.value;//valore della casella1 nucleo=document.carica.nucleo.value;//valore della casella2
if ((document.carica.profilo[0].checked==true) && (nucleo==1)) {//se è stato cliccato su sì e casella2=1 allora..... document.carica.costonucleo.value=valorefisso1;//valore fisso } if ((nucleo !=1)&&(document.carica.profilo[0].checked==true)) {//se casella2 è diversa da 1 e casella1 è sì allora fai la somma { costonucleo=parseInt(nucleo)*parseInt("205")+parseInt("470"); document.carica.costonucleo.value=costonucleo; } } if ((nucleo !=1)&&(document.carica.profilo[1].checked==true)) {//se casella2 è diversa da 1 e casella2 è no allora fai la somma { costonucleo=parseInt(nucleo)*parseInt("260")+parseInt("515"); document.carica.costonucleo.value=costonucleo; } } } ma non ha funzionato e, come ti dicevo mi blocca anche le altre, sto diventando matto e non riesco a capire dove sta l'errore. grazie mille per la disponibilità.
|
|
Rank: AiutAmico
Iscritto dal : 9/20/2004 Posts: 1,597
|
Entrambe le funzioni qui sopra sembrano corrette (la mia l'ho provata e sul mio PC funziona). il problema potrebbe risiedere in qualche valore inacettabile che passi ai vettori profilo o nucleo, o in qualche rognoso errore di sintassi (basta una virgola in piu o in meno...). Altra possibilità è che al caricamento dello script le tue variabili non esistano ancora... Se usi Netscape, ha di default un praticissimo tool (Web development > javascript console) che ti indicherà in quale riga lo script si blocca, rendendo molto più facile l'individuazione dell'errore. Sono cosi avanti che quando guardo indietro vedo il futuro.
|
|
Rank: Member
Iscritto dal : 8/7/2004 Posts: 1
|
ho il tool di IE già attivo e mi segnala questo errore: Riga: 185 Carattere: 10 Errore: Previsto ';' Codice. 0 sai dirmi che tipo di errore è? questa è la riga incriminata: (input name="costonucleo" onkeyup="funzione calcola(this.form)" size="10" style="text-align: center; font-size:10 pt; font-weight:bold"). scusa se stresso, ma 'sta cosa mi sta facendo uscire pazzo e rischia di mettermi in difficoltà al lavoro. ti ringrazio tanto.
|
|
Rank: AiutAmico
Iscritto dal : 9/20/2004 Posts: 1,597
|
La riga di per se mi pare giusta, ma fai attenzione che per quello che ne so, a differenza di Netscape, il tool di IE si ferma alla riga del documento html che causa l'errore, non considerando eventuali errori in script richiamati; ovvero, l'errore potrebbe risiedere nella funzione calcola(), ma per IE è in quella riga. Sono cosi avanti che quando guardo indietro vedo il futuro.
|
|
Rank: Member
Iscritto dal : 8/7/2004 Posts: 1
|
ok. rifarò un altro controllo. puoi darmi un altro consiglio? per tenere più pulito ed ordinato il codice, le funzioni e le variabili è meglio metterle in un file esterno? ed in questo caso come vanno richiamate? ciao e di nuovo grazie.
|
|
Rank: AiutAmico
Iscritto dal : 9/20/2004 Posts: 1,597
|
se le funzioni sono tante è meglio, per questioni di ordine, metterle in uno o più file esterni (che potrai modificare o sostituire senza manomettere il resto del codice). nell'head devi mettere un richiamo al file del tipo: <SCRIPT src="Ausiliarie.js" type="text/javascript"></SCRIPT> da quel punto in poi è come se i tuoi script fossero presenti nel foglio HTML e potrai richiamarli come al solito, p.es. legandoli ad un evento: <BODY onLoad="CreaMenu('Menus');"> Sono cosi avanti che quando guardo indietro vedo il futuro.
|
|
Rank: Member
Iscritto dal : 8/7/2004 Posts: 1
|
perdona la mia ignoranza, ho fatto come suggerisci, ma non mi è chiaro all'interno dello script come richiamare la funzione, ad es. se questa deve farmi apparire la somma nella casella di testo "text1" al click del mouse dentro ad essa come devo fare? grazie per la pazienza.
|
|
Rank: AiutAmico
Iscritto dal : 9/20/2004 Posts: 1,597
|
Innanzitutto assumo che se stai usando javascript vuoi lavorare esclusivamente lato server (senza POST ne REQUEST). Supponiamo che la tua funzione somma (scritta nel famoso file Ausiliarie.js, si chiami proprio: Somma() e che la tua casella sia una cella di una table. -Prima di tutto devi identificarla con un ID del tipo: <TD ID="risultato"></TD> -Poi, nella tua funzione somma dovra esserci una routine che fa scrivere nella suddetta cella. p.es. se il risultato è contenuto in una variabile chiamata Ris, devi scrivere: document.getElementById("risultato").innerHTML=Ris -Infine richiami la tua funzione: <TD ID="risultato" ONCLICK="Somma()"></TD> Prova, se non è chiaro fammi sapere. Sono cosi avanti che quando guardo indietro vedo il futuro.
|
|
Rank: Member
Iscritto dal : 8/7/2004 Posts: 1
|
ciao e scusa il ritardo nella risposta, sono stato via per lavoro; non funziona più nulla e non ci capisco più niente, ho incasinato tutto il codice html... e a questo punto mi conviene azzerare tutto e ricominciare da capo cercherò di fare tesoro dei tuoi preziosi consigli, posso solo ringraziarti tantissimo per la pazienza e disponibilità, a presto.
|
|
Guest |