Avatar billede lightbrain Nybegynder
25. maj 2002 - 18:17 Der er 5 kommentarer og
1 løsning

Hent ArrayElement fra funktion?

Hej

Hvis jeg f.eks. skal undersøge, hvad titlen på et element i et array hedder, så skriver jeg følgende:

gruppe[arrayNr][i].titel

Men hvis jeg i stedet vil gøre det samme i funktion (med et parameter), er jeg i tvivl om, hvordan man gør. Jeg ville gætte på noget med:

gruppe[arrayNr][i].value[parameter]

Nu virker det bare ikke med "value" - og det er derfor også mit spørgsmål, hvad skriver man så?


**** Nedenstående er måske relevant ******

var gruppe = new Array();
gruppe[1] = new Array();
gruppe[2] = new Array();
gruppe[3] = new Array();

function artikel(titel, forfatter, beskrivelse, filnavn, emnenr) {
  this.titel= titel;
  this.forfatter= forfatter;
  this.beskrivelse= beskrivelse;
  this.filnavn= filnavn;
  this.emnenr= emnenr;
}
Avatar billede jakoba Nybegynder
26. maj 2002 - 11:18 #1
adresseringen er den samme. du skal blot holde dig klart hvad ved inedxerings-værdien kommer:

gruppe[17] = 25;  // index 17 skrives direkte

var idx = 18;
gruppe[idx] = 25  // index kom i variabel

function gornoget( indexverdi ) {
gruppe[indexverdi] = 25
}; //end gornoget( number )
var idx = 19;
gornoget( idx );  // index i variabel overdrages til parametervariabel og bruges tilsidst indeni funktionen

mvh JakobA
Avatar billede jakoba Nybegynder
26. maj 2002 - 11:19 #2
Ups.  hvad ved -> hvad vej
Avatar billede lightbrain Nybegynder
26. maj 2002 - 11:46 #3
Ok, men hvordan bruger jeg så strengene "objektPrimaerNoegle", "ElementTekst" og "ElementVaerdi" på den korrekte måde i mit eksempel:

function Indlaes( form, element, arrayNr, objektPrimaerNoegle, ElementTekst, ElementVaerdi) {
   
  if (element == "sektion") {
        document.forms[form].emne.length = 0;
        document.forms[form].artikel.length = 0;
  }
 
  if (element == "emne") {
      document.forms[form].artikel.length = 0;
  }

alert("objektPrimaerNoegle: " + objektPrimaerNoegle + "  ElementTekst: " + ElementTekst + "  ElementVaerdi: " + ElementVaerdi);
   
  y = 0;
  for (var i = 1;i < gruppe[arrayNr].length; i++)  {         
        if ( document.forms[form].elements[element].options[document.forms[form].elements[element].selectedIndex].value == gruppe[arrayNr][i].objektPrimaerNoegle) {
            document.Artikel.emne.options[y] = new Option( gruppe[3][i].ElementTekst, gruppe[3][i].ElementVaerdi);
            y++;
        }
  }
}

Problemet ligger i at jeg skriver:

....gruppe[arrayNr][i].objektPrimaerNoegle
....Option( gruppe[3][i].ElementTekst, gruppe[3][i].ElementVaerdi

Ved begge siger browseren, at objekterne er tomme eller ikke eksisterer (selvom alert siger, at de ikke er tomme), så derfor tror jeg, at jeg ikke bruger dem korrekt. Men hvordan gør man så (i mit eksempel?

____________________- Måske relevant - _____________________

  <select size="2" name="sektion" onclick="self.Indlaes('Artikel', 'sektion', '3', 'sektionnr', 'titel', 'emnenr');"> 
  </select>
Avatar billede lightbrain Nybegynder
26. maj 2002 - 11:56 #4
[PS. Her kommer lige et side-spørgsmål. Enten har du lavet om på din hjemmeside, som jeg får megen god inspiration fra :-), eller også kan jeg ikke huske, hvor jeg fandt dit eksempel, hvor man kunne indsætte, slette og flytte elementer op og ned i den samme dropdown-menu. Kan du huske linket?]
Avatar billede lightbrain Nybegynder
26. maj 2002 - 17:43 #5
Glem det, jeg har fundet ud af det - hvis du vil have nogle points så tryk 'svar' :-)
Avatar billede lightbrain Nybegynder
27. maj 2002 - 18:32 #6
For god ordens skyld, lukker jeg dette spørgsmål, idet jeg henviser interesserede til http://www.eksperten.dk/spm/216422 hvor spørgsmålet blev besvaret.
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