|
| javascript variable scope Fra : Svend Tofte |
Dato : 09-01-01 19:59 |
|
Jeg er ikke en haj til scripting, men jeg ved godt hvordan det med
local og global variabler virker, men er der nogen begræsninger på
hvilke "ting" som kan gøres til globale variabler?
jeg har lige rodet med noget kode som ser sådan ud:
-----------------------------
<script>
function swap(){
var p = document.getElementById('mytxt');
p.firstChild.nodeValue=='this is a paragraph, read it and weep!'?
p.firstChild.nodeValue='hey there, this is some swapped content':
p.firstChild.nodeValue='this is a paragraph, read it and weep!';
}
function alignp(){
var p = document.getElementById('mytxt');
p.getAttribute('align')=='Left'?
p.setAttribute('align','right'):
p.setAttribute('align','left');
}
</script>
-----------------------------
jeg kan ikke putte var p = document.getElementById('mytxt'); uden for
de to funktioner, så få jeg en fejl, men hvis jeg fx laver et mere
simpelt script ala det her:
<script>
var myvar = 'dette er en test'
function blah(){
alert(myvar)
}
</script>
så virker det fint, men foroven så kan jeg ikke sætte "p" uden for,
hvorfor ikke? er der nogen måde jeg kan gører det på ellers?
| |
claus (11-01-2001)
| Kommentar Fra : claus |
Dato : 11-01-01 17:52 |
|
Svend Tofte <stofte@worldonline.dk> skrev i en
news:3a5b5e94.43802134@news.worldonline.dk...
> Jeg er ikke en haj til scripting, men jeg ved godt hvordan det med
> local og global variabler virker, men er der nogen begræsninger på
> hvilke "ting" som kan gøres til globale variabler?
[snip]
Som default er alle variable globale i JS det er først når du erklærer en
variable med nøgleordet "var" at den bliver lokal, så der er ingen nogen
begræsninger på hvilke "ting" som kan gøres til globale variabler.
> jeg har lige rodet med noget kode som ser sådan ud:
> -----------------------------
> <script>
> function swap(){
> var p = document.getElementById('mytxt');
> p.firstChild.nodeValue=='this is a paragraph, read it and weep!'?
> p.firstChild.nodeValue='hey there, this is some swapped content':
> p.firstChild.nodeValue='this is a paragraph, read it and weep!';
> }
>
> function alignp(){
> var p = document.getElementById('mytxt');
> p.getAttribute('align')=='Left'?
> p.setAttribute('align','right'):
> p.setAttribute('align','left');
> }
> </script>
> -----------------------------
>
> jeg kan ikke putte var p = document.getElementById('mytxt'); uden for
> de to funktioner, så få jeg en fejl.
[snip]
Du har jo erklæret var p og som følge deraf er var p kun tilrådighed
"lokalt" i functionen, jeg vil lige gøre opmærksom på:
det er den korrekte måde du har gjordt det på, hvis du har brug din variable
andre steder i din fil kan du kalde din function der hvor du har brug for
den (det er det der meningen med en function).
--
MVH
Claus Pryds
clarke@vip.cybercity.dk
| |
Svend Tofte (14-01-2001)
| Kommentar Fra : Svend Tofte |
Dato : 14-01-01 00:09 |
|
>det er den korrekte måde du har gjordt det på, hvis du har brug din variable
>andre steder i din fil kan du kalde din function der hvor du har brug for
>den (det er det der meningen med en function).
måske er det mig som er lidt dum, men, jeg vil gerne vide hvorfor
visse ting kan laves til variabler, mens andrer ikke kan, jeg tænkte
at det måske har noget at gører med at nogle ting er pointere, mens
andrer er rigtige values (jeg er ude og famle er, correct me if I'm
wrong).
i mit konkrete eksempel, kan dette fx ikke gøres til en global
variable, hvad enten jeg stikker et var foran eller ej.
p = document.getElementById('mytxt');
mens det her:
var myvar = 'dette er en test'
sagtens kan gøres til en global variable. dvs jeg declarer den uden
for min funktion. og min funktion vil så stadig virke, mens den
foroven (p), der vil scriptet kun virke hvis den er declaret inden for
min funktion. hvorfor?
| |
|
|