Newsgroup: it.comp.lang.javascript
Titolo: Aiuto!!!If else e cicli

Devo realizzare una pagina web che mi dia 3 messaggi.
Un prompt che mi chiede il nome,se non metto niente e schiaccio ok o annulla
deve ripetersi il prompt,altrimenti deve darmi una finestar confirm che mi
chiede "Sei tu '+nome+'?"Se dico si deve darmi un alert:"Ciao'+nome+'!"se
dico no deve tornare al primo prompt.Devo usare i cicli e if ,else...Chi mi
da una mano?
-._.--._.--._.--._.--._.--._.--._.--._.--._.--._.--._.--
Fratelli: ciò che facciamo in vita riecheggia nell'eternità
-._.--._.--._.--._.--._.--._.--._.--._.--._.--._.--._.--

 da una mano?
Ma che e' un esercizio scolastico?
Se ti ho capito:
function foo(){
	var s=window.prompt("Il tuo nome?","");
	return s?window.confirm("Sei tu "+s+"?"):foo();
}
La funzione restituisce true o false a seconda che l'utente prema "ok" o 
"annulla".
Chiaramente se viene inserito uno spazio bianco il nome viene 
considerato valido. Se e' un caso da escludere leggi la mia risposta a 
Arjuna.


Scusami se non rispondo alla tua domanda...
Ma se e' l'utente ad inserire il nome a che serve la conferma "Sei tu
'+nome+'?" ?
Mi sembra un passaggio inutile...
-- 
____________________
Salvatore Ciambra
Gruppo Elicotteri R/C "Ready to Win" - Palermo
http://www.readytowin.org
Cancella TOGLI per rispondermi
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 da una mano?
<html>
<head>
<script type="text/javascript">
	onload=function(){
		var nome="";
		while (!nome){
			nome=prompt("Come ti chiami?","");
			if (nome)
				nome=confirm("Sei tu '"+nome+"'?")?nome:"";
		}
		alert("Ciao "+nome+"!");
	}
</script>
</head>
<body>
	Esercizio Scolastico (si presume..)
</body>
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
"When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)

 Ma che e' un esercizio scolastico?
In tal caso hai dato una risposta "non da esercizio scolastico", ma da
web-developer.. non ti sei immedesimato. ;)


 web-developer.. non ti sei immedesimato. ;)
Hai piu' che ragione, ma non pensare che non mi sia posto il problema...
Nel dubbio pongo la domanda, lo scrivo come lo scriverei io, aspetto 
risposte ed eventuali richieste di delucidazioni.
Alla cieca dovrebbe essere "ragionevolmente didattico"...
(hai fatto bene a puntualizzare)

Il reply era ovviamente all'altro post, ma non e' giornata...

Mi vergogno un po'ma è esattamente un esercizio scolastico e come avrete
capito sono un newbie!
Sonon alla quarta lezione di javascript e,come saprete la teoria è una cosa
ma la pratica...Il prof vuole che usiamo costrutti basilari come if else e
il ciclo while e\o do while e non altri
costrutti particolari!!Ho provato a ragionarci e qualcosa ho fatto,ma  al
primo prompt schiaccio annulla passa al confirm e mi chiede:'6 tu null?'E
poi se al confirm schicciassi no dovrei tornare al 1°prompt
Es:
<html>
<head>
<title>Es01</title>
<script type="text/javascript">
nome='';
do nome=prompt('Come ti chiami?','')
while(nome=='' || nome=="null")
if(confirm('Sei tu '+nome+'?'))
{
  alert("Ciao "+nome)}
  else
 {
  nome='';
 }
Vi autorizzo a sbaccanare ma non ad infierire vi prego!


 (hai fatto bene a puntualizzare)
Lo sai che sono un rompicazzo (e' politicamente corretto rompicazzo? E per
parcondicio devo dire anche "sfasciapatata"?) quando si tratta di
puntualizzare.
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
"Questa e' una lezione difficile, ma importante: Cio' che e' stato, e cio'
che sara', non cambia cio' che e'.
Sta a te decidere poi come prendere questa cosa,se logorarsi per un passato
che non puoi cambiare, invece di prendere tutto il bene che il presente ti
offre." ()

 Il reply era ovviamente all'altro post, ma non e' giornata...
Questo non l'ho capito..


 costrutti particolari!!
Lo immaginavo, il mio esempio infatti segue quel tipo di linea.
Se ti "spaventa" l'uso de:
onload=function(){
	etc..
}
l'ho fatto solo per praticita', ovvero far partire il programma al momento
del caricamento avvenuto della pagina, e non prima, per evitare - su alcuni
browser, in certe condizioni - che i messaggi potessero far casotto.
Puoi cmq toglierlo, e la funzionalita' del programma rimane inalterata:
<script type="text/javascript">
		var nome="";
		while (!nome){
			nome=prompt("Come ti chiami?","");
			if (nome)
				nome=confirm("Sei tu '"+nome+"'?")?nome:"";
		}
		alert("Ciao "+nome+"!");
</script>
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
"Questa e' una lezione difficile, ma importante: Cio' che e' stato, e cio'


 Questo non l'ho capito..
Un problema di refresh: dello schermo e del mio cervello.
Semplicemente il client non aveva ridisegnato la finestra e quando ho 
buttato l'occhio sul thread il mio post compariva come risposta ad un 
altro messaggio.

 Lo sai che sono un rompicazzo 
In questo ambiente "pignolo e' bene". Anzi necessario.
 > (e' politicamente corretto rompicazzo? E per
 > parcondicio devo dire anche "sfasciapatata"?) quando si tratta di
 > puntualizzare.
Pero' da un toscano mi aspetto qualcosa di piu' creativo di 
"sfasciapatata". Riprova.

 "sfasciapatata". Riprova.
Sai che non mi piace scadere nel troppo volgare.. In questo sono un Toscano
atipico. Da noi la bestemmia e' un opera di fantasia e creativita'; certi
ragazzi che conosco hanno hanno tirato fuori della "robe" allucinanti.. per
non parlare poi di alcuni contadini della Maremma.
Ma come tu ben sai, io neanche bestemmio.


 altro messaggio.
I understood.. Ti suggerisco cmq di cambiare newsreader (quando un software
mi piace, lo divulgo), leggi un po' i miei headers.
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
"Questa e' una lezione difficile, ma importante: Cio' che e' stato, e cio'



--


> nome=confirm("Sei tu '"+nome+"'?")?nome:""; <---------Me lo spieghi se puoi?
Questo si chiama "operatore ternario":
condizione?parte vera:parte falsa;
Lo puoi leggere come:
SE condizione vera ALLORA parte vera ALTRIMENTI parte falsa
E' utile nelle assegnazioni di variabili:
var oggipiove=true;
var azione=oggipiove?"prendo l'ombrello":"prendo la bicicletta";
alert(azione);
Cambiando lo stato della variabile "oggipiove" a false o a true,
automaticamente ad "azione" viene assegnata una stringa differente.
Avresti potuto scrivere la stessa cosa con un IF:
if (oggipiove)
	azione="prendo l'ombrello";
else
	azione="prendo la bicicletta";
Nel caso del nostro esercizio, quindi, l'operatore ternario diventerebbe:
if (confirm("Sei tu'"+nome+"'?"))
	nome=nome;
else
	nome="";
Come vedi l'operazione che esegue nel caso che il confirm() restituisca un
valore vero, e' inutile. Si assegna il solito valore.
Infatti mentre in un IF si puo' mettere anche solo la parte in cui la
condizione e' verificata (ovvero puoi omettere l'else), nel caso
dell'operatore ternario devi SEMPRE mettere entrambi i casi: caso in cui la
condizione si verifica e caso in cui essa non si verifica.
Quindi, volendo scrivere:
nome=confirm("Sei tu '"+nome+"'?")?nome:"";
con un canonico IF:
if (!confirm("Sei tu '"+nome+"'?"))
	nome="";
che e' abbastanza di facile lettura e comprensione (se non confermi di
essere tu 'nome', allora imposto nome uguale a stringa vuota, cosi' che
viene fatto ciclare nuovamente il prompt di richiesta).


Mai pensato di scriverne uno?;-)Grazie davvero!!
