Avatar billede sjh Nybegynder
17. december 2004 - 17:07 Der er 12 kommentarer og
1 løsning

for each i array

hvordan laver man en "for each" ??


  var arrTest = new Array();
  for (var i = 0; i < 9; i++) {
    var newname = ("noget_" + i);
    arrTest[newname] = new Array();
    for (var j = 0; j <= 3; j++) {
      arrTest[newname][j] = "noget_andet_"+j;
    }
    newname = null;
  }


Her vil jeg så godt lave en for each

arrTest[De navne som står her skal jeg bruge]

i min test ved jeg godt at den hedder "noget_"+i men det er kun i testen jeg ved det..
Avatar billede skovenborg Nybegynder
17. december 2004 - 17:11 #1
Der findes den såkaldte "for in" løkke:
var arr = new Array();
arr["et"] = 1;
arr["to"] = 2;
arr["tre"] = 3;
for (i in arr) {
    document.write(i + " => " + arr[i] + "<br>");
}

Som du nok kan med lidt justering få til at gøre det samme som dit oprindelige.
Avatar billede sjh Nybegynder
17. december 2004 - 17:15 #2
ja det var lige den jeg skulle bruge... smid et svar så er der point :-)
Avatar billede skovenborg Nybegynder
17. december 2004 - 17:20 #3
okay, men 100 point er for meget for den smule tekst. 15 er mer end nok :-)
Avatar billede sjh Nybegynder
17. december 2004 - 17:23 #4
når jeg har point nok.. og du kom med et hurtigt svar, som kunne bruges :D

takker mange gange :-)
Avatar billede skovenborg Nybegynder
17. december 2004 - 17:24 #5
jaja, jamen så god jul da :-)
Avatar billede sjh Nybegynder
17. december 2004 - 17:27 #6
jo tak i lige måde :D
Avatar billede sjh Nybegynder
17. december 2004 - 17:53 #7
skovenborg du ved vel ikke hvordan man gør.. hvis man skal køre en funktion når alle billeder er loadet.. jeg har lavet en funktion som selv kan loade billeder.. men den kan først køres når siden er loadet ind.. ellers kan jeg ikke bruge -> var objImg = document.getElementsByTagName("IMG");


  var arrImg = new Array();

  function onLoadImage() {
    var strPath = "image/";
    var objImg = document.getElementsByTagName("IMG");
    for (var i = 0; i < (objImg.length -1); i++) {
      var strId = objImg[i].id;
      if (strId && objImg[i].className.toLowerCase() == "imgbutton") {
        arrImg[strId] = new Array();
        for (var j = 0; j <= 3; j++) {
          arrImg[strId][j] = new Image();
          arrImg[strId][j].src = (strPath + strId + "_" + j + ".gif");
        }
      }
    }
    strId = null;
    objImg = null;

    for (var strName in arrImg) {
      document.getElementById(strName).src = arrImg[strName][0].src;
    }
  }
Avatar billede skovenborg Nybegynder
17. december 2004 - 17:55 #8
du skal vel bare køre den når siden er loadet så ;-)

<body onload="onLoadImage();">
Avatar billede sjh Nybegynder
17. december 2004 - 17:57 #9
jo det gør jeg skam også.. men den må ikke vise billederne før de er loadet alle sammen..

den her må først køre når alle billederne er loadet

    for (var strName in arrImg) {
      document.getElementById(strName).src = arrImg[strName][0].src;
    }
Avatar billede skovenborg Nybegynder
17. december 2004 - 18:18 #10
et forslag (utestet) kunne være at lave en lille ekstra funktion:
function printImages() {
    completed = true;
      for (i in arrImg) {
        completed = arrImg[i][0].complete && completed;
        if (!completed) {break;}
    }
    if (completed) {
      for (var strName in arrImg) {
      document.getElementById(strName).src = arrImg[strName][0].src;
    }
    }
    else {
      window.setTimeout("printImages();",1000);
    }
}

og så køre den sådan her:
strId = null;
    objImg = null;

    printImages();
}

Nu er det utestet, men jeg tror pointen er fin nok. Billeder har en complete property, som fortæller om billedet er færdigt eller ej. Hvis det viser sig at et af billederne ikke er færdigt endnu:
completed = arrImg[i][0].complete && completed;
if (!completed) {break;}
så stopper den løkke man har gang i og en timeout blive startet (vi venter lige lidt før vi prøver igen)
Avatar billede sjh Nybegynder
17. december 2004 - 18:26 #11
Nej hvor er du bare god.. det virker helt som det skal.. så nu tror jeg også det passer med de 100 point :D

mange tak endnu en gang :-)
Avatar billede skovenborg Nybegynder
17. december 2004 - 18:28 #12
det var så lidt - og tak for points (nu kan jeg da ikke have så dårlig sammenvittighed mere ;-)
Avatar billede sjh Nybegynder
17. december 2004 - 18:33 #13
ha ha nej det skal du heller ikke hav.. selv om du ikke kunne løse den med load billede..
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