Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  15 1248
Jeg har laga et program i JavaScript (off topic: orginalt og ganske fett!)

Det som er problemet er at hvis jeg ikke inkluderer alle tre parameterne i en funksjon, går det utover en annen kode. Du tenker sikkert "hvorfor har du ikke bare to da?" - Selvfølgelig bruker jeg alle tre i andre funksjoner, men i denne trenger jeg bare to.

Her er koden:

function something(j,f,k) { //john f. kennedy (lol)
//ting skjer her!!!!
}

function hei() {something("f","ok","jump");}

Det som skjer her er at hvis jeg ikke har med jump, som ikke har noe med den koden, vil det gå utover andre funksjoner som sagt. Koden funker, men det jeg ikke skjønner er hvorfor jeg må ha alle parameterne? Jeg bruker alle tre i andre funksjoner, men ikke denne.

Noen ideer?
Jeg ville extenda funksjonen, og laget en annen funksjon som heter feks somethingJump og brukt denne i stedet

Kode

function somethingJump(j, f) {
    something(j, f, "jump");
}
Sist endret av admin; 10. juni 2012 kl. 11:34.

Kode

function something(j,f,k) { 
console.log(j+","+f+","+k);
}

something("f","ok"); // f,ok,undefined
Funker fint dette. k blir satt til undefined, så kan du sjekke om den er satt til det.
Sist endret av esl; 10. juni 2012 kl. 11:51.
Trådstarter
Sitat av esl Vis innlegg

Kode

function something(j,f,k) { 
console.log(j+","+f+","+k);
}

something("f","ok"); // f,ok,undefined
Funker fint dette. k blir satt til undefined, så kan du sjekke om den er satt til det.
Vis hele sitatet...
Vel, her går det desverre ikke. Har en annen parameter inne i denne funksjonen :O


Sitat av admin Vis innlegg
Jeg ville extenda funksjonen, og laget en annen funksjon som heter feks somethingJump og brukt denne i stedet

Kode

function somethingJump(j, f) {
    something(j, f, "jump");
}
Vis hele sitatet...
Sorry det går ikke jeg må ha siden på under 10 kb.
Det finnes jo en bråte av js-minimizere, så hvis du får litt mer enn 10kb nå, kjør en sånn en på det du laster opp. Det finnes forresten til css og. I tillegg til optimeringsverktøy for bilder m.m.

Edit: du kan vel kalle funksjonen med funksjon(j,null, k);
Sist endret av lor3ntz; 10. juni 2012 kl. 13:10.
Trådstarter
Sitat av lor3ntz Vis innlegg
Det finnes jo en bråte av js-minimizere, så hvis du får litt mer enn 10kb nå, kjør en sånn en på det du laster opp. Det finnes forresten til css og. I tillegg til optimeringsverktøy for bilder m.m.

Edit: du kan vel kalle funksjonen med funksjon(j,null, k);
Vis hele sitatet...
Det fungerer ikke Dette var en vanskelig nøtt.
Alle funksjonsparametre er valgfrie i JS. Dvs at du kan velge å bruke alle, eller ingen, eller noe mellom. De du ikke bruker blir satt til 'undefined'. Så de blir satt.

Om 'undefined' er en uønsket verdi så må du kontrollere i funksjonen om noen av variablene er 'undefined', og da evnt sette en default verdi.
z0p
uʍop ǝpısdn
z0p's Avatar
Litt usikker på hvor du vil

her er noen kjappe løsninger for å håndtere valgfrie argumenter i funksjoner:

Kode

function opt_arg_one()
{
    req_arg_1 = arguments[0];
    req_arg_2 = arguments[1];
    opt_arg_1 = (arguments[2]) ? arguments[2] : "Default Value";

    alert(req_arg_1 + req_arg_2 + opt_arg_1);
}


function opt_arg_two(args) {
    var default_values = {
        'one'    :    "first value",
        'two'    :    true,
        'three'    :   3
    }
    for(var index in default_values) {
        if(typeof args[index] == "undefined") args[index] = default_values[index];
    }

    alert(args.one + args.two + args.three);
}


opt_arg_one('one', 'two');
opt_arg_one('one', 'two', 'three');

opt_arg_two({'one':'myvalue', 'three':'thirdvalue'});​
Sitat av ios77 Vis innlegg
Vel, her går det desverre ikke. Har en annen parameter inne i denne funksjonen :O
Vis hele sitatet...
Kan du utdype?
Trådstarter
Sitat av tormaroe Vis innlegg
Kan du utdype?
Vis hele sitatet...
Jeg bruker også en annen funksjon med parametere. Når jeg har bare to på den ene går det utover den andre (den funker ikke mer).
Nå er ikkje jeg så veldig inne på javascript, har skrevet det en del, men ikkje noe veldig avanserte funksjoner.

Men vil tro at dette skal fungerer:

Kode

function do_something (x, y, z = null)
{
   // Do some awesome stuff;
}
Nå kan du kalle den på 2 måter:

Kode

do_something ("var1", 21);
og:

Kode

do_something ("var1", 21, "jump");
min idé vil være at du omstrukturer koden din. Lulzy McQuickfix™ er *ikke* særlig lurt i lengda. (eller i utgangspunktet.)
Sitat av ios77 Vis innlegg
Jeg bruker også en annen funksjon med parametere. Når jeg har bare to på den ene går det utover den andre (den funker ikke mer).
Vis hele sitatet...
Det funker dessverre ikke å bare si hvordan du har koden din, du må nesten vise selve koden dersom noen skal forstå hva i all verden det er du driver med. Jeg foreslår at du limer koden din inn på http://gist.github.com og linker den i en post her, så kan folk hjelpe deg litt bedre
▼ ... over en uke senere ... ▼
Skjønner fortsatt ikke hva problemet er her, men jeg vil gjerne oppklare litt om hvordan javascript-funksjoner forholder seg til argumenter. De bryr seg rett og slett ikke om hvor mange eller hvor få du sender inn - så problemene må være knyttet til hva du gjør inne i funksjonen.

Ta f.eks. denne funksjonen:

Kode

  function something(j, f, k) {
    console.log("" + j + ", " + f + ", " + k 
      + " - " + arguments.length + " arguments");
  }
Jeg kan kalle den med 3, 2, 1 eller ingen parametre helt fint:

Kode

  something(1, 2, 3);
  something(1, 2);
  something(1);
  something();
Output er:

Kode

1, 2, 3 - 3 arguments
1, 2, undefined - 2 arguments
1, undefined, undefined - 1 arguments
undefined, undefined, undefined - 0 arguments
Jeg kan også kalle den med flere argumenter:

Kode

  something(1, 2, 3, 4, 5, 6);
Som gir:

Kode

1, 2, 3 - 6 arguments
argument-objektet kan brukes til å hente ut argument 4, 5 og 6.
Nå er ikkje jeg så veldig inne på javascript, har skrevet det en del, men ikkje noe veldig avanserte funksjoner.

Men vil tro at dette skal fungerer:
Vis hele sitatet...

Kode

function do_something (x, y, z = null)
{
   // Do some awesome stuff;
}
Nei det er nok ikke sånn default argument til en funksjon fungere i javascript.
I språk som python,php... ville dette fungert.
javascript som du ser tormaroe beskriver bry seg ikke hvor mange agrumenter man sender inn.
Viss man vil ha default arumenter i javascript,vil det se ut noe som dette.

Kode

function func(j,k){
   if(typeof(j)==='undefined') j = "John";
   if(typeof(k)==='undefined') k = "Kennedy";

   alert(j+" .f  "+k)
   }

func();  //John f. Kennedy
Her kaller jeg func() uten argumenter, "j,k" fungere nå som default argumenter.
Kaller jeg func('foo', 'bar') vil ouptut bli som forventet foo f. bar

Skal ikke gi meg ut på gjette hva ios77 har problemer med,må komme med mere info.
Får ikke helt beskrivelsen din til og stemme.

Edit:
Ser nå at det er stund sin første post,så da er det kansje løst ettersom ingen ny info har kommet.
Sist endret av snippsat; 26. juni 2012 kl. 00:07.
Trådstarter
Det er en hard nøtt å knekke dette.