Just nu i M3-nätverket
Gå till innehåll

variabler i js


jan-erik

Rekommendera Poster

Jag försöker reda ut hur det egentligen funkar med globla variabler i JS.

 

om jag har några funktioner med en gememsam variable, då borde jag väl kunna deklarera denna utanför funktionerna, alltså nåt sånt häringas:

 

var globvar
function f1(..)
{alert(globvar);}
function f2(..)
{alert(globvar);}

 

Kan jag knuffa in ett värde i globvar i xvis en "onclick", xvis globvar="något" ?

Kan jag knuffa in ett värde i globvar genom att använda "return" i en funktion?

 

En som frågat förr.

 

 

 

 

Länk till kommentar
Dela på andra webbplatser

Kan jag knuffa in ett värde i globvar i xvis en "onclick", xvis globvar="något" ?

Kan jag knuffa in ett värde i globvar genom att använda "return" i en funktion?

Svaret är ja på båda frågor.

På den andra frågan kan jag väl förtydliga att en tilldelning är en tilldelning, oavsett vad som (giltigt) står på högersida likamed-tecknet. Det är alltså ingen skillnad mellan globvar=1 eller globvar=GetAValue(), samma regler appliceras.

 

Att vara extra försiktig med när man använder ett scriptspråk är att vara väldigt noga med att alltid deklarera lokala variabler.

Annars riskerar du att kanske använda samma namn på en global som en lokal variabel, vilket riskerar att resultera i extremt svårhittade buggar i ett större script.

 

Länk till kommentar
Dela på andra webbplatser

[color="#0000ff"]<input name="bokny" id="bokny" type="button"  value="boka "   onclick="
var evid=<? echo $evid;?>;[/color][color="#ff0000"]var globvar=<? echo $evid;?>;[/color]
[color="#ff0000"]alert(globvar);[/color]
[color="#0000ff"]var hnam=$F('hnmny1');
testglobal(evid,hid,hnam,txt);
" />	[/color]




function testglobal(evid,hid,hnm,txt)
{
alert(globvar);
}

 

Då borde alltså ovanstående avskalade saker funka? Men det händer inget med alert(globvar).

 

Länk till kommentar
Dela på andra webbplatser

Nej, det där fungerar inte. Du måste deklarera variabeln inom det scope du vill använda den i. Nu har du deklarerat den lokalt i en funktion (mer exakt inom händelsehanterarfunktionen för input_onClick). En global deklaration måste ske utanför alla funktioner, ex. utanför alla funktioner inom <script>-taggarna.

Däremot kan du tilldela den ett värde inom funktionerna, som den sedan bibehåller.

 

ex.

<script>
var globalVar=0;
VisaVar();

function VisaVar()
{
alert(globalVar);
}
</script>

..............

<input type="button" value="Testa nytt värde" onclick="globalVar=1;VisaVar();">

 

[inlägget ändrat 2008-11-05 18:48:37 av Anjuna Moon]

Länk till kommentar
Dela på andra webbplatser

Tack så hemskt mycket, Anjuna!

Du tror mig säkert inte, men jag kom på det precis när ditt mail plingade!

Poäng blir det!

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...