Avatar billede steka Nybegynder
30. marts 2003 - 14:28 Der er 11 kommentarer og
1 løsning

Array og gruppering af elementer

Jeg forsøger at skrive elementer fra en tabel på een linie.
Siden ser således ud:


<html>
<head>
<script language="JavaScript">
i=0;
j=0;
spiller = new Array(
"0*27*4853* 179,74*Navn 1", //gruppe 1
"1*21*3724* 177,33*Navn 2", //gruppe 2
"1*27*4609* 170,70*Navn 3", //gruppe 2
"1*27*4224* 156,44*Navn 4", //gruppe 2
"2*24*3691* 153,79*Navn 5", //gruppe 3
"2*24*3542* 147,58*Navn 6", //gruppe 3
"3*27*4853* 179,74*Navn 7", //gruppe 4
"3*21*3724* 177,33*Navn 8", //gruppe 4
"3*27*4609* 170,70*Navn 9") //gruppe 4
function skrivnavne(i){
if (i==spiller[i+j].substr(0,1)&& i==spiller[i+1+j].substr(0,1) && i==spiller[i+2+j].substr(0,1)){
  document.write(spiller[i+j].substr(18,20)+", "+spiller[i+1+j].substr(18,20)+" og "+spiller[i+2+j].substr(18,20)+"<br>");
  j=2; // tanken er at der springes 3 navne frem når kaldt næste gang
  }   
else if (i==spiller[i+j].substr(0,1) && i==spiller[i+1+j].substr(0,1)){
  document.write(spiller[i+j].substr(18,20)+" og "+spiller[i+1+j].substr(18,20)+"<br>");
  j=1; // tanken er at der springes 2 navne frem når kaldt næste gang
  }   
else if (i==spiller[i+j].substr(0,1)){
  document.write(spiller[i+j].substr(18,20)+"<br>");
  j=0; // tanken er at der springes 1 navn frem når kaldt næste gang
  }   
  }
</script>
</head>
<body>
<script language="JavaScript">
for (k = 0; k<4; k++) {
document.write("\<b>Gruppe: "+k+"\</b><br>");skrivnavne(k);
}
</script>
</body>
</html>


Desværre kan jeg ikke styre scriptet ved gruppe fra og med gruppe 3 fordi mine værdier bliver for høje.

Een der kan hjælpe mig ud af dette problem ?
Avatar billede jespernaur Nybegynder
30. marts 2003 - 15:53 #1
Hvad er det du prøver på? Er det at udskrive et antal grupper, hvor hver gruppe har et varierende antal medlemmer? Hvis det er, findes der adskilligt elegantere måder at gøre det på.

Desuden: Den kode du har vist, anvender slet ikke positionerne 1-17 i dine data, er det noget der skal komme senere?
Avatar billede steka Nybegynder
30. marts 2003 - 15:59 #2
Ja det er korrekt.
Tabellen bruges også af andre scripts, hvor andre data i tabellen benyttes. Genereres fra Access som tekstfiler.
Jeg sagde ikke at det var elegant det jeg havde forsøgt - kun at det ikke virker efter hensigten ;-)))
Avatar billede steka Nybegynder
30. marts 2003 - 18:03 #3
jespernaur: har du en mere elegant måde at gøre det på ?
Avatar billede Slettet bruger
30. marts 2003 - 18:17 #4
Dette gør det meget nemmere bare at fylde på. Det letter også arbejdet, hvis arrayet skal bruges i andre sammenhænge:

<html>
<head>
<script type="text/JavaScript">
spillere = new Array();
  spillere[0] = new Array();
    spillere[0][0] = new Array(27, 4853, "179,74", "Navn 1");
  spillere[1] = new Array();
    spillere[1][0] = new Array(21, 3724, "177,33", "Navn 2");
    spillere[1][1] = new Array(27, 4609, "170,70", "Navn 3");
    spillere[1][2] = new Array(27, 4224, "156,44", "Navn 4");
  spillere[2] = new Array();
    spillere[2][0] = new Array(24, 3691, "153,79", "Navn 5");
    spillere[2][1] = new Array(24, 3542, "147,58", "Navn 6");
  spillere[3] = new Array();
    spillere[3][0] = new Array(27, 4853, "179,74", "Navn 7");
    spillere[3][1] = new Array(21, 3724, "177,33", "Navn 8");
    spillere[3][2] = new Array(27, 4609, "170,70", "Navn 9");

function skrivNavne() {
  for (i = 0; i < spillere.length; i++) {
    document.write("<b>Gruppe: " + i + "</b><br>");
    for (n = 0; n < spillere[i].length; n++) {
      if (n != 0 && n == spillere[i].length - 1)
        document.write(" og ");
      else if (n != 0)
        document.write(", ");
      document.write(spillere[i][n][3]);
    }
    document.write("<br>");
  }
}
</script>
</head>
<body>
<script type="text/JavaScript">
skrivNavne();
</script>
</body>
</html>
Avatar billede Slettet bruger
30. marts 2003 - 18:18 #5
Bare sig til, hvis du mangler yderligere hjælp.
Avatar billede steka Nybegynder
30. marts 2003 - 18:37 #6
Jaa, men de data jeg har vist kommer fra en forespørgsel. Dit forslag kræver vel en del indtastning ?!. Jeg har en hulens bunke data, der skal ind i scriptet, og søger en måde, hvor de viste data automatisk kan konverteres til det søgte resultat.
Avatar billede Slettet bruger
30. marts 2003 - 18:39 #7
Hvis du med "forespørgsel" mener database, bør det ikke være et hak sværere at kode.
Det sidste må du uddybe.
Avatar billede steka Nybegynder
30. marts 2003 - 18:48 #8
Dette ligger i en .js fil:

spiller = new Array(
"0*27*4853* 179,74*Navn 1",
"1*21*3724* 177,33*Navn 2",
"1*27*4609* 170,70*Navn 3",
"1*27*4224* 156,44*Navn 4",
"2*24*3691* 153,79*Navn 5",
"2*24*3542* 147,58*Navn 6",
"3*27*4853* 179,74*Navn 7",
"3*21*3724* 177,33*Navn 8",
"3*27*4609* 170,70*Navn 9")

og er grundlaget for det der skal vises.

Kan man automatisere din array in array ?
Avatar billede Slettet bruger
31. marts 2003 - 14:43 #9
Hvad med i stedet at lægge dette:

spillere = new Array();
  spillere[0] = new Array();
    spillere[0][0] = new Array(27, 4853, "179,74", "Navn 1");
  spillere[1] = new Array();
    spillere[1][0] = new Array(21, 3724, "177,33", "Navn 2");
    spillere[1][1] = new Array(27, 4609, "170,70", "Navn 3");
    spillere[1][2] = new Array(27, 4224, "156,44", "Navn 4");
  spillere[2] = new Array();
    spillere[2][0] = new Array(24, 3691, "153,79", "Navn 5");
    spillere[2][1] = new Array(24, 3542, "147,58", "Navn 6");
  spillere[3] = new Array();
    spillere[3][0] = new Array(27, 4853, "179,74", "Navn 7");
    spillere[3][1] = new Array(21, 3724, "177,33", "Navn 8");
    spillere[3][2] = new Array(27, 4609, "170,70", "Navn 9");

... i den JS-fil.
Avatar billede steka Nybegynder
31. marts 2003 - 15:00 #10
Stort smajl ...
Det tænkte jeg også  -  på vej til arbejde i morges - men da var mailen sendt :-<
Men det har du da ret i - og vil blive afprøvet når jeg kommer hjem.
Avatar billede steka Nybegynder
31. marts 2003 - 21:13 #11
Ja - det kan Access også klare.
Arrays in arrays havde jeg ikke hørt om før - ser frem til at dyrke mulighederne i det - hvis jeg kan gennemskue det ;-)
Så mange tak for svaret, som dog har skabt et nyt problem.
Må jeg skrive til dig privat med det ?
Avatar billede Slettet bruger
01. april 2003 - 15:12 #12
Gerne:
mail@phoenixv.dk
Og helst ICQ 198916325.
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