Just nu i M3-nätverket
Jump to content

variabler i js


jan-erik

Recommended Posts

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.

 

 

 

 

Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

[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).

 

Link to comment
Share on other sites

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]

Link to comment
Share on other sites

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!

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...