Avatar billede _k Nybegynder
18. september 2003 - 15:04 Der er 4 kommentarer og
1 løsning

Automatiske knapper

Hvorfor kan jeg ikke det her?

for(x=1;x<13;x++) {
    eval(x).onRelease = function() {
        trace(x);
    }
}

Knap 1 skal naturligvis skrive "1", knap 2 "2" osv., men de skriver allesammen 13...
Avatar billede barklund Nybegynder
18. september 2003 - 15:13 #1
Du skal sætte x som en lokal variabel på den enkelte knap:

var m;
for(x=1;x<13;x++) {
    m = eval(x);
    m.id = x;
    m.onRelease = function() {
        trace(this.id);
    }
}
Avatar billede _k Nybegynder
18. september 2003 - 15:25 #2
Det virker jo perfekt :o)

..men hvorfor egentlig? Ved du om det er en actionscript "besynderlighed", eller om der er en god forklaring? Kan initieringen af funktionerne ellers ikke nå at følge med i en forløkke?

Læg bare et svar.
Avatar billede barklund Nybegynder
18. september 2003 - 15:35 #3
Jo jo, men værdien er x bliver jo ikke gemt på det tidspunkt, hvor du opretter funktionen. Det er tværtimod sådan, at når du trykker på knappen, så finder funktionen ud af, hvilken værdi x har, når man trykker. Det er jo det smarte med funktoiner - netop at deres præmisser er dynamisk. Ellers var det jo en statisk funktion. Så det eneste du fortæller knappen er, at når den bliver trykket på, så skal den trace værdien af x - på dette tidspunkt.

I funktionsprogrammering er det anderledes - men det er en helt anden snak!
Avatar billede _k Nybegynder
18. september 2003 - 15:50 #4
Mange tak for uddybningen. På trods af have lavet massevis af funktioner, har jeg aldrig spekuleret over denne forskel. Men det åbner da muligheder, som jeg da skal til at lege lidt med :o)
Avatar billede barklund Nybegynder
18. september 2003 - 15:58 #5
Tark for points
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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