Avatar billede bolmer Nybegynder
27. maj 2005 - 00:20 Der er 7 kommentarer og
1 løsning

Underligt kald på en funktion

I et tidligere indlæg fik jeg en beskrivelse af et JavaScript hvor der var defineret en funktion:

createOpts(sel)

I denne metode var der følgende linie:

var args = createOpts.arguments.length;

Da denne funktion tager et select objekt som argument, skal det så forstås som at args svarer til antallet af muligheder i dette selectobjekt??
Avatar billede bolmer Nybegynder
27. maj 2005 - 00:23 #1
Ups glemte at smide point på, kan man nå det endnu?
Avatar billede skovenborg Nybegynder
27. maj 2005 - 00:27 #2
nej, args er længden af antallet af argumenter. Umiddelbart ser det ud til at der kun er et argument, nemlig sel (der netop er et select-element), men javascript giver dig mulighed for at tilføje et ubestemt antal argumenter. Alle argumenter du kalder funktionen med bliver lagt ind i arguments-arrayet. De får altså ikke navne ligesom "sel", men kan hentes ved fx at sige arguments[1] (det andet argument).

Hvis du fx kalder funktion createOpts sådan: <select onchange="createOpts(this,'sel1','sel2');"> (se http://www.eksperten.dk/spm/620957)
så vil
arguments[0] = selectobjektet
arguments[1] = "sel1"
arguments[2] = "sel2"

Dette er netop smart hvis man ikke på forhånd ved hvor mange argumenter man skal bruge.
Avatar billede bolmer Nybegynder
27. maj 2005 - 00:36 #3
Ok virker lidt syret at den samme funktion kan taget et variabelt antal argumenter.
Avatar billede bolmer Nybegynder
27. maj 2005 - 00:53 #4
Som det første kalder man jo initSels() som bare kalder createOpts med et argument, nemlig sel1. Så jeg kan ikke rigtig se hvornår det er onchange bliver udført, når man starter med at kalde initSels().

Hvorfor bliver der i onchange givet 3 argumenter til createOpts? Der er jo kun to select objekter (altså 2 drop/down menuer)...kan ikke helt få øje på den 3.
Avatar billede skovenborg Nybegynder
27. maj 2005 - 01:08 #5
Som sagt i det andet spørgsmål bliver bliver initSels (som kalder createOpts(document.getElementById('sel1')); brugt til at lave den første selectboxs værdier. Den anden selectbox skal der her ikke ændres noget ved så funktionen skal kun bruge sel-variablen.
Senere i onchange kaldes funktionen med createOpts(this,'sel1','sel2');
sel1 og sel2 skal som sagt bruges til at markere hvilke selectelementer der bruges og this henviser til selve selectboxen man ændrer på (altså i dette tilfælde sel1).

Men man forstår det nok bedre hvis man gennemgår selve funktionen dybdegående - og det har jeg ikke ;-)
Avatar billede roenving Novice
27. maj 2005 - 01:21 #6
-- og du kan sagtens skyde point i, ved under 'Funktioner' oppe til venstre at vælge 'Afsæt flere point' !-)
Avatar billede bolmer Nybegynder
27. maj 2005 - 08:52 #7
Ok så ved det første kald til initSels bliver createOpts kaldt med kun et argument, dvs den første forløkke og de 2 første if sætninger bliver sprunget over.
Avatar billede bolmer Nybegynder
07. juli 2005 - 11:37 #8
ikke flere svar
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