Aiutamici Forum
Benvenuto Ospite Cerca | Topic Attivi | Utenti | | Log In | Registra

javascript:impostare ciclo if Opzioni
zwack
Inviato: Monday, December 06, 2004 11:41:16 AM

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.
Sponsor
Inviato: Monday, December 06, 2004 11:41:16 AM

 
dead
Inviato: Monday, December 06, 2004 2:05:36 PM

Rank: AiutAmico

Iscritto dal : 9/20/2004
Posts: 1,544
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.
zwack
Inviato: Wednesday, December 08, 2004 10:48:45 AM

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à.
dead
Inviato: Thursday, December 09, 2004 10:50:17 AM

Rank: AiutAmico

Iscritto dal : 9/20/2004
Posts: 1,544
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.
zwack
Inviato: Thursday, December 09, 2004 12:36:11 PM

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.
dead
Inviato: Thursday, December 09, 2004 2:00:04 PM

Rank: AiutAmico

Iscritto dal : 9/20/2004
Posts: 1,544
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.
zwack
Inviato: Thursday, December 09, 2004 2:24:48 PM

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.
dead
Inviato: Thursday, December 09, 2004 4:35:57 PM

Rank: AiutAmico

Iscritto dal : 9/20/2004
Posts: 1,544
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.
zwack
Inviato: Monday, December 13, 2004 4:36:05 PM

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.
dead
Inviato: Monday, December 13, 2004 5:04:16 PM

Rank: AiutAmico

Iscritto dal : 9/20/2004
Posts: 1,544
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.
zwack
Inviato: Friday, December 17, 2004 9:43:31 AM

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.
Utenti presenti in questo topic
Guest


Salta al Forum
Aggiunta nuovi Topic disabilitata in questo forum.
Risposte disabilitate in questo forum.
Eliminazione tuoi Post disabilitata in questo forum.
Modifica dei tuoi post disabilitata in questo forum.
Creazione Sondaggi disabilitata in questo forum.
Voto ai sondaggi disabilitato in questo forum.

Main Forum RSS : RSS

Aiutamici Theme
Powered by Yet Another Forum.net versione 1.9.1.8 (NET v2.0) - 3/29/2008
Copyright © 2003-2008 Yet Another Forum.net. All rights reserved.