Newsgroup: it.comp.lang.javascript
Titolo: Visibilità variabili

 Salve, ho un problemino che non riesco a risolvere:
in un file .js definisco una variabile:
var TotalMnuWidth=BrowserType("wi");
dove BrowserType() č una funzione che mi individua certi parametri. La
variabile TotalMnuWidth č utilizzata poi in un'altra funzione:
function CreaMenu(NomeContainer) {
...
}
con  Netscape e Firefox funziona benissimo, con IE affinchč la variabile
TotalMnuWidth sia riconosciuta, *la dichiarazione sopra indicata devo farla
all'interno della funzione CreaMenu() *, altrimenti la considera "undefined"
č possibile o sto sbagliando qualcosa?
Grazie.
________________________
 Found me @ 
www.dead.it

 è possibile o sto sbagliando qualcosa?
Stai sbagliando qualcosa. Se la stai dichiarando al di fuori di una
function deve esser visibile e, soprattutto, non può esser visibile con
firefox ma non con IE...Stai sbagliando qualcos'altro...
Ricordo un problema simile un mesetto fa, alla fine era IE che interpretava
male la chiusura del tag script, ossia <script ...... />. E' per caso
questo il problema? (chiudi con </script> anziché direttamente nel tag di
apertura)
-- 
"Ti sei salvato
 o sei entrato in banca pure tu?"
									    A.V.

Muovendo a caso le dita sulla tastiera Cristiano Larghi scrisse:

Innanzitutto ti ringrazio della risposta, però ho controllato i tag e mi
sembrano tutti corretti.
Per di più se sostituisco l'istruzione:
var TotalMnuWidth=BrowserType("wi");
con
var TotalMnuWidth=600;
funziona perfettamente con entrambi i tipi di browser.
Inoltre, se dopo la dichiarazione della variabile metto un
alert(TotalMnuWidth);
Posso vedere che se la variabile è dichiarata all'interno di una funzione mi
ritorna un risultato corretto, altrimenti (solo con IE) mi ritorna
undefined...
Non è che IE accetta solo Costanti come variabili globali?


 Non è che IE accetta solo Costanti come variabili globali?
No...ho ricreato il tuo problema (se ho ben capito) qua:
http://www.criosoftware.it/av250866.htm
E funziona correttamente...è corretto quello che ho capito?
Con quale versione di IE stai testando?
-- 
"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.

 Con quale versione di IE stai testando?
il tuo funziona... mah.
comunque visto che sei così gentile, ho messo on line il codice della pagina
in costruzione all'indirizzo:
http://www.dead.it/NEW/index.html
se proprio in una sera di pioggia non ci sono film alla TV e non sai cosa
fare dacci un'occhiata, così ti addormenti del tutto ;-)
P.S. non far caso all'"eleganza" del codice, perchè come avrai capito sono
un dilettante.
tnx.
P.S. ho visto che IE mi da un errore alla riga 136, ma onestamente non
riesco ad individuarlo...


 fare dacci un'occhiata, così ti addormenti del tutto ;-)
Segnala errore riga 18. Con un po' di debug si arriva a questa riga di
Menuscript.js:
var TotalMnuWidth=BrowserType("wi")/2;
L'errore è in realtà nella function BrowserType ma è un errore di logica:
l'istruzione wi=document.body.clientWidth;
Prova a fare un bel alert(document.body)...non esiste. Questo perché
diviene disponibile solo dopo aver caricato l'intero documento. Devi percui
spostare questa function (o solo questa parte) onload del body.
Dato che questo valore ti serve in Menuscript (esegui tutto fuori da una
function) dovrai cercare di spostare tutta questa parte onload del body (la
metti dentro una function e la richiamo come prima function dell'onload).
L'altro errore è sempre concettuale: dichiari le variabili all'interno di
una function, e questo fa sì che sia valide solo all'iterno della function
stessa.
Quindi ti segnala errore, per esempio, perchè non sa cosa sia LarghMenu:
questo perché lo hai dichiarato come var LarghMenu all'interno di una
function.
Puoi risolvere egregiamente semplicemente rimuovendo il var (senza var la
variabile è globale).
Questo avviene con moltissime variabili, occorre togliere a tutte il var.
L'url sotto funziona, poi sta a te...
http://www.criosoftware.it/av250866/av250866.htm
-- 
"Affacciati affacciati benedici, guardaci
 guardaci...guardaci!
 Tanto sono quasi duemila anni che stai a guardare!"
									    E.B.

 
http://www.criosoftware.it/av250866/av250866.htm
Grazie, sei stato gentilissimo e di grande aiuto. In effetti gli errori
concettuali sono tra i più difficili da scoprire, e con la mia conoscenza
autodidattica del js, non ci sarei mai arrivato (o comunque mi hai
risparmiato molta fatica).
ciao.
