Newsgroup: it.comp.lang.javascript
Titolo: Funzione verifica variabile settata

Ciao a tutti,
in Javascript esiste una funzione che permette di verificare se una 
determinata variabile è stata settata (e restituire true) oppure non è stata 
settata (e restituire  false)?
In php c'è una funzione del tipo:  isset (nomevar); in javascript?
Ho la necessità di scrivere un piccolo script dove è necessario verificare 
se alcune variabili siano state o meno settate dall'esterno per far prendere 
allo script, le giuste decisioni.
Grazie in anticipo, per la risposta.
Cooper. 

 settata (e restituire  false)?
non ho capito: settata = ?
 alert(tuavar==null ? "non settata": "settata");
-- 
"Capivamo di essere tanti
 capivamo di essere forti,
 il problema era solamente
 come farlo capire ai morti."
									    C.L.


Settata nel senso che ha un valore assegnato. Poichè c'è differenza fra una 
variabile a stringa vuota e una non settata... volevo distinguere l'una 
dall'altra.
Quindi dal tuo esempio se la variabile non è stata settata (ovvero non è 
stato assegnato alcun valore precedentemente) assume il "valore" null 
corretto? dunque se scrivo (ad esempio)
  if (miavar == null) {
        // assegna valore di default
    } else {
       // valida valore miavar
   }
Ho detto giusto? Una curiosità per dire che miavar sia diversa da null devo 
scrivere:     miavar != null oppure miavar <> null? (domanda un po' banale, 
ma non ho capito bene quale dei due è meglio come operatore).
Grazie ancora,
Cooper. 

 ma non ho capito bene quale dei due è meglio come operatore).
ehm ...
https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Operators/Comparison_Operators
http://msdn.microsoft.com/en-us/library/9hck4s70(VS.85).aspx
-- 
"Voi abili a tenere sempre un piede qua e uno là
 avrete un avvenire certo in questo mondo qua
 però la dignità
 dove l'avete persa?"
									    V.R.


Ti confesso che dai due link sono uscito più confuso di prima; dal primo 
link (mozilla) dice di usare l'operatore != se non sono uguali oppure !== se 
non sono uguali e dello stesso tipo e fin qui tutto ok... però nel secondo 
link (microsoft) dice di usare l'operatore <> a questo punto; a chi mi devo 
conformare perché lo script funzioni correttamente.
Lo so che è una domanda banale e chiedo venia... ma ho bisogno di 
assicurarmi che il codice che andrò a scrivere funzioni correttamente anche 
sulle versioni più vecchiotte di ie e ff.
Grazie ancora,
Cooper.
 

 conformare perché lo script funzioni correttamente.
ehm ... dice anche un'altra cosetta: che il primo è per javascript e il
secondo per vbscript ... ... ...
-- 
"Io odio
 perché sfruttati si nasce magari ci si diventa
 però non lo si inventa"
									99


Si ho notato questo dettaglio, ma tu hai postato entrambi i link è ho 
interpretrato l'intenzione come se i due fossero connessi; quindi allora 
l'unico operatore valido è quello di mozilla.
Chiarito il dubbio adesso, thanks.
 

Ciao, scusami ancora, ma ho un altro piccolo problema,
ho scritto il seguente spezzone di codice:
<script type="text/javascript">
   function isset (value) {
	 if (value == null) {
		 result = false;
	   } else {
		 result = true;
	   }
	  return result;
     }
  if (isset (pippo)) { alert "settata"; } else { alert "non settata"; }
</script>
Mi sarei dovuto aspettare un alert con la scritta "non settata", ma non mi 
compare nulla; non capisco dove abbia sbagliato dal momento che nemmeno il 
browser mi rileva degli errori.
Grazie ancora, per il tuo aiuto.
Cooper.
 

 browser mi rileva degli errori.
uhm ... se usi firefox (se non lo usi inizia, perché se ti basi sugli
"errori" segnalati da IE non ne esci piů) vedrai perfettamente l'errore
sopra riportato dell'alert; una volta sistemato vedrai il nuovo errore ...
come fai a dire che non compaiono errori?
Comunque sia, non stai definendo "pippo" ... ti ho chiesto per questo
motivo cosa voleva dire "non settata"; la tua risposta č stata:
"Settata nel senso che ha un valore assegnato. Poichč c'č differenza fra
una 
variabile a stringa vuota e una non settata... volevo distinguere l'una 
dall'altra."
Invece dallo script sopra sembra che manco sia stata dichiarata ... č
questo quindi il quesito? se sě: devi usare typeof per capirlo (e non puoi
a naso passarlo come parametro), se č "undefined" non č stata dichiarata:
https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Operators/Special_Operators/typeof_Operator
-- 
"That until there is no longer first class
And second class citizens of any nation
Until the colour of a man's skin
Is of no more significance than the colour of his eyes
Me say war"
									B.M.

  if (isset (pippo)) { alert "settata"; } else { alert "non settata"; }
con:
  if (isset (pippo)) { alert ("settata"); } else { alert ("non settata"); }
Dove sbaglio?
 


Un attimo, porta pazienza per favore... allora io ho uno script base in cui 
l'utente finale potrà o meno inserire dei valori tramite variabili (per 
rendere l'idea qualcosa molto simile al codice javascript di google adsense.
Ora dal momento che io devo gestire tutte le variabili e non posso sapere 
quali variabili l'utente andrà a definire nel codice javascript, ho bisogno 
di un sistema che mi permetta di capire quali variabili sono state definite 
(settate) e quali invece no.
Come devo quindi comportarmi perchè possa individuarle correttamente?
 

 non siano state settate o definite (ovvero avere un valore null).
così a naso:
 pippo=typeof pippo=="undefined"?"":pippo;
dopodiché puoi usare la tua function ...
-- 
"Ho smesso di fumare.
 Vivrò una settimana di più.
 E in quella settimana pioverà a dirotto"
									    W.A.

 ha scritto nel messaggio 
news:fu3cl.44531$J84....@tornado.fastwebnet.it...

Provando con Firefox, mi dice che pippo non è definita, ma io questo lo già, 
però voglio fare in modo che lo script sia in grado di capirlo e di gestire 
la situazione di conseguenza. Ho provato scrivendo la condizione cosi:
 if (typeof (value) == "null") {
oppure cosi:
 if (typeof (value) == "undefined") {
ma non ho ottenuto nessun risultato :(
Qualche ulteriore indicazione?
Grazie ancora mille.
Cooper. 

 Qualche ulteriore indicazione?
hai letto l'ultimo mio post?



Si adesso si, ora provo; se ho ben capito dovrei fare cosi per tutte le 
variabili che dovrei gestire?
Grazie ancora :) 


pippo=typeof pippo=="undefined"?"":pippo;
Adesso mi restituisce "settata"; in altre parole se è undefined la imposta
come stringa vuota... ma non sembra una strada percorribile, cioè se devo
gestire 50 parametri... dovrei scrivere 50 volte quella riga (vedi sopra),
una per ogni variabile? mi sembra assurdo; quello che volevo fare era
scrivere una funzione che facesse esattamente quello.
Cioè io passo una variabile; la funzione verifica se è "undefined" e
restituisce true in caso affermativo oppure false in caso negativo; e
richiamo quella funzione con la variabile che devo esaminare per stabilire
se è undefined oppure no.
Possibile che non si possa fare e che bisogna per forza scrivere una riga
per ogni variabile? Non c'è un modo più pulito tenendo conto che i nomi
delle variabili sono diversi fra di loro?
Grazie ancora.
Cooper.
PS: Anche se scrivo cosi:
<script type="text/javascript" language="javascript1.5">
   function isset (value) {
         value = typeof value == "undefined" ? "":value;
         return value;
      }
  if (isset (pippo)) { alert ("settata"); } else { alert ("non settata"); }
</script>
Ottengo lo stesso problema :(
 

 Ottengo lo stesso problema :(
Ti ho già risposto su questo: non puoi passare una var inesistente come
parametro ...



Ragionando su quanto mi hai scritto prima ho trovato la soluzione che 
cercavo, scrivendo correggendo il codice in questo modo:
<script type="text/javascript">
   function isset (value) {
       if (value == "undefined") {
          result = false;
        } else {
          result = true;
        }
       return result;
    }
  if (isset (typeof pippo)) { alert ("settata"); } else { alert ("non 
settata"); }
</script>
Grazie per il tuo aiuto, č stato determinante.
Cooper.
 

 </script>
Al posto, semplicemente di:
if ( typeof pippo == "undefined" )
	alert("settata")
else
	alert("non settata")
Ma son cose che ti ha anche detto Cristiano e non e` molto chiaro come
mai tu ti stia impuntando su questa cosa. Anche te, attento al "Golden
Hammer".. ;)
-- 
"When you have eliminated the impossible, whatever remains, however
improbable, must be the truth."

 ha scritto nel messaggio 
news:497101C8...@ID-171124.news.individual.net...

Non è che mi stia impuntando è che vorrei trovare una soluzione più 
pulita... cioè io mi trovo a dover gestire circa 50 variabili diverse fra di 
loro... e scrivere la stessa riga in modo ripetitivo non mi sembra una 
soluzione pulita, per fare un esempio... (non conosco bene javascript, ma 
cerco di rendere l'idea con php):
echo "riga 1";
echo "riga 2";
echo "riga 3";
....
echo "riga n";
io scriverei più brevemente come:
for ($counter = 1; $counter <= n; $counter++) {
    echo "riga $counter";
 }
allo stesso modo se ho un blocco di codice X composto da N istruzioni; se 
dovessi eseguirlo N volte per K variabili diverse, sarebbe più logico 
racchiudere il blocco di codice X in una funzione e quindi richiamare la 
funzione K volte.
Non so se mi spiego; il senso di quello che cercavo di fare io era proprio 
questo :( però mi sa che non si può in javascript a quanto ho capito :((((
 

 capito :((((
Vuoi sostituire un operatore con una funzione.. questo e` quello
che sembra tu voglia fare, e non ha molto senso. Se ti salvasse,
dallo scrivere cinquanta volte le cinquanta variabili, capirei..
