Avatar billede koch Nybegynder
11. november 2003 - 17:41 Der er 13 kommentarer og
1 løsning

Oprettelse af array udfra oplysninger i et andet array

Jeg har et array:

obj=new Array()
obj[0] = "info11*info12*info13*info14*info15*info16*1"
.
.
.
obj[32] = "info321*info322*info323*info3
24*info325*info326*125"

Jeg skal have oprettet følgende:

    //--obj_1--
    img[1].src = "Pics/info11/IMAGE001.JPG"
    img[2].src = "Pics/info11/IMAGE002.JPG"
    img[3].src = "Pics/info11/IMAGE003.JPG"
    img[4].src = "Pics/info11/IMAGE004.JPG"

    //--obj_2--
    img[5].src = "Pics/info21/IMAGE001.JPG"
    img[6].src = "Pics/info21/IMAGE002.JPG"
    img[7].src = "Pics/info21/IMAGE003.JPG"
    img[8].src = "Pics/info21/IMAGE004.JPG"

    .
    .
    .
    //--obj_32--
    img[125].src = "Pics/info321/IMAGE001.JPG"
    img[126].src = "Pics/info321/IMAGE002.JPG"
    img[127].src = "Pics/info321/IMAGE003.JPG"
    img[128].src = "Pics/info321/IMAGE004.JPG"

Kan dette gøres med følgende:
var imgShift=new Array();
    for (i=0;i<=obj.length; i++){
img[obj[i].split("*")[6]].src="Pics/+obj[i].split("*")[0]+"/IMAGE001.JPG"
img[obj[i].split("*")[6]+1].src="Pics/+obj[i].split("*")[0]+"/IMAGE002.JPG"
img[obj[i].split("*")[6]+2].src="Pics/+obj[i].split("*")[0]+"/IMAGE003.JPG"
img[obj[i].split("*")[6]+3].src="Pics/+obj[i].split("*")[0]+"/IMAGE004.JPG"
    }
Avatar billede skovenborg Nybegynder
11. november 2003 - 22:35 #1
du laver et par fejl nogen steder. Først og fremmest skal du lige kalde new Image(); så scriptet ved du har med et billede at gøre. Herudover har du et par småfejl som at du bruger img-arrayet, men du kalder den jo selv for imgShift lige før. Så skriver du også "Pics/+obj - her mangler du lige et "-tegn.

Sidst men ikke mindst så skal du vide at den første værdi som du bruger som index i img-array'et er en streng - dvs. du ikke kan lægge tal til - det vil blot blive lagt til strengen.
Avatar billede skovenborg Nybegynder
11. november 2003 - 22:37 #2
Jeg vil mene det skal se sådan ud:
img = new Array();
for (i=0;i<=obj.length; i++){
for (j=0;j<=0;j++)
{
  img[parseInt(obj[i].split("*")[6])+j] = new Image();
  img[parseInt(obj[i].split("*")[6])+j].src="Pics/"+obj[i].split("*")[0]+"/IMAGE001.JPG";
}
}
Avatar billede skovenborg Nybegynder
11. november 2003 - 22:39 #3
sorry der skulle stå:
for (j=0;j<=4;j++) {.---
Avatar billede skovenborg Nybegynder
11. november 2003 - 22:41 #4
undskyld igen - der er lige et par fejl endnu - så burde det give det forventede resultat:
var img=new Array();
        for (i=0;i<obj.length; i++){
          for (j=0;j<=4;j++)
          {
          img[parseInt(obj[i].split("*")[6])+j] = new Image();
          img[parseInt(obj[i].split("*")[6])+j].src="Pics/"+obj[i].split("*")[0]+"/IMAGE00"+(j+1)+".JPG";
          }
        }
Avatar billede roenving Novice
11. november 2003 - 23:12 #5
>>skovenborg

-- du kan selvfølgelig ikke li'e gennemskue, at koch lige har givet mig nogle points for en kode, som bare genererede img[0] - img[32] som new Image() ...
Avatar billede skovenborg Nybegynder
12. november 2003 - 13:06 #6
nåå - jamen så kan jeg også bedre forstå det hele ;-)
Avatar billede koch Nybegynder
14. november 2003 - 20:25 #7
når jeg åbner mit dokument får jeg fejlmeddelelsen:
linie 37 img[...] er null eller ikke et objekt.
linie 37, tegn 7 ser sådan ud:
      img[parseInt(obj[i].split("*")[6])+j].src="Pics/"+obj[i].split("*")[0]+"/IMAGE00"+(j+1)+".JPG";

Jeg kan ikke finde fejlen!
Avatar billede skovenborg Nybegynder
14. november 2003 - 22:31 #8
og du har sagt:
img[parseInt(obj[i].split("*")[6])+j] = new Image();
???
Avatar billede skovenborg Nybegynder
14. november 2003 - 22:36 #9
...eller var det det som roenving hjalp dig med!?! ;-)

Hvis du bruger den kode jeg har givet dig er det ikke sikkert det vil virke sammen med roenvings - kommer jo an på hvordan det er opbygget. Kunne du vise koden her???
Avatar billede koch Nybegynder
15. november 2003 - 21:47 #10
her er koden.
var img=new Array();
  for (i=1;i<33;i++){
      img[i] = new Image();
    }

var imgShift=new Array();
  for (i=0;i<=obj.length; i++){
      for (j=0; j<=4; j++)
      img[parseInt(obj[i].split("*")[6])+j].src="Pics/"+obj[i].split("*")[0]+"/IMAGE00"+(j+1)+".JPG";
    }
     

i arrayet obj er i=15, men det er vel ligegyldigt om jeg opretter 32 variable til at have billeder i selvom det lige nu kun er 15 af dem der bliver brugt?
Avatar billede skovenborg Nybegynder
16. november 2003 - 00:12 #11
prøv:
var obj= new Array();
obj[1] = "info11*info12*info13*info14*info15*info16*5";
//.....osv.
var img=new Array();
  for (i=1;i<33;i++){
      img[i] = new Image();
    }
var imgShift=new Array();
  for (i=0;i<obj.length; i++){
      for (j=0; j<=4; j++) {
      img[parseInt(obj[i].split("*")[6])+j].src="Pics/"+obj[i].split("*")[0]+"/IMAGE00"+(j+1)+".JPG";
    }
}
Avatar billede skovenborg Nybegynder
16. november 2003 - 00:14 #12
normalt skriver du aldrig <= etarray.length men blot < etarray.length.
Avatar billede koch Nybegynder
20. november 2003 - 19:00 #13
Jeg har benyttet dit første forslag

var img=new Array();
        for (i=0;i<obj.length; i++){
          for (j=0;j<=4;j++)
          {
          img[parseInt(obj[i].split("*")[6])+j] = new Image();
          img[parseInt(obj[i].split("*")[6])+j].src="Pics/"+obj[i].split("*")[0]+"/IMAGE00"+(j+1)+".JPG";
          }
        }

Det andet vil give problemer idet jeg så skulle hasve to arrays der skulle hedde img. Fejlen var iøvrigt rimelig 'simpel', nogen vil måske kalde det en dum fejl,,,jeg er en af dem der vil kalde den meget dum ;o)

var imgShift=new Array();
  for (i=0;i<obj.length; i++){
      for (j=0; j<=4; j++) {
      img[....

Det går vist ikke at lave et nyt array imgShift hvori objekterne skal hedde img... Tak for hjælpen.
Du virker til at have styr på det. Hvis du skulle sidde inde med flere gode ideer, så kan du altid se om en af dem passer på dette spg. ;o) http://www.eksperten.dk/spm/427646
Avatar billede skovenborg Nybegynder
20. november 2003 - 23:12 #14
det var så lidt - og tak for point ;-)
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