Avatar billede sb Nybegynder
08. april 2002 - 12:05 Der er 3 kommentarer og
1 løsning

Globale variabler i Javascript

Jeg er total nybegynder når det gælder JS, men et enkelt spørgsmål :

Når man definerer en global variabel i JS, vil denne variabel så kunne bruges på flere "sider", eller vil det kun være på den side hvor variablen er definert, at den kan bruges?
Avatar billede jakoba Nybegynder
08. april 2002 - 12:38 #1
Det er ikke noget begreb 'global' i Javascript. Det nærmeste vi commer er core variable og funktioner, det vil sige predefinerede værdier og funktioner der kan tilgås nårsomhelst allevegne fra.

escape() og unescape() er fc core funktioner.
Math objektet ligger også i core.

men vi kan ikke ændre nogetsomhelst i core. alle variable og funktioner vi definerer bliver defineret i et eller andet objekt. Som oftest window-objektet for den side koden står på.

i et frameset og når der er popops er der så flere window-objekter og man må adressere sig frem imellem dem

parent.
  foran en variabel fortæller at variablen ligger i framesetfilen for denne ramme.

opener.
  foran en variabel fortæller den ligger i den side der åbnede denne popop

parent.olsen.
  foran fortæller den ligger i en ramme ved navn 'olsen' i samme frameset.

det kan blive pænt kompliceret

top.opener.parent.venstre.foroven.antalHits = 5;
  giver værdien 5 til "variablen antalHits der ligger i en ramme ved navn 'foroven' hvis frameset ligger i en ramme ved navn 'venstre' som er naboramme til den side der åbnede denne popop som jeg er en underramme af."

Tungen lige i munden.

Derudover kan du også definere variable i allemulige lokale objekter i vinduet.
document.forms['olsen'].elements['antal'].defailtVerdi = 5
  giver værdien 5 til en variabel der hedder 'defaultVærdi' i et feltobjekt der hedder 'antal' i et formobjekt der hedder 'olsen' i denne rammes dokumentobjekt.

mvh JakobA
Avatar billede sb Nybegynder
08. april 2002 - 13:29 #2
OK tak for opklarende svar. Da blev jeg faktisk lidt klogere.

Men, jeg har f.eks. følgende kode :

<SCRIPT LANGUAGE="Javascript">
  var t;
function velgtype(valg) {
           
            if (valg=="1") {  // Hvis Valg = Turisme
                t.LayerVisible[0] = 0;
                t.LayerVisible[1] = 1;
                t.LayerVisible[4] = 1;
                t.LayerVisible[5] = 1;


            }

            if (valg=="2") {  // Hvis valg = Rovdyr
                t.LayerVisible[0] = 1;
                t.LayerVisible[1] = 0;
                t.LayerVisible[4] = 0;
                t.LayerVisible[5] = 0;

            }

            t.sendMapXML();
        }
</script>

Her er LayerVisible og sendMapXML funktioner som er definert i en ekstern .js fil.

Hvorfor kan disse kaldes fra ovenstående kode. Der er ikke nogen henvisning til .js filen på siden ovenstående kode befinder sig.

Og hvorfor bruges t foran funktionskaldet?
Avatar billede sb Nybegynder
08. april 2002 - 13:29 #3
Afsætter lige lidt flere poeng...
Avatar billede jakoba Nybegynder
28. april 2002 - 17:47 #4
Undskyld jeg ikke har svaret før, nogen gang bliver mails væk så jeg ikke opdager der er skrevet i et af de spørgsmåj jeg har svaret på.

Det kan være su skal sætte variablen t
så den peger på det windue de to funktioner er defineret i:
  var t = parent.rammehvordenjsfilligger;
så er t en pegepind til den rammes windueobjekt og du kan starte funktionerne ved at skrive t. foran navnet

Men det mest sandsynlige er nok at der er noget kode i den .js fil der selv sørger for at t bliver sat. Står ordet 'onload' et sted i .js filen eller er der en onload handler i <body kommandoen der kalder en funktion i .js filen ?

mvh JakobA
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester