Avatar billede nicklasb Nybegynder
03. december 2004 - 15:57 Der er 13 kommentarer og
1 løsning

Udskriftning af billeders src gennem en løkke

Jeg har otte previewbilleder, der ved aktivering af en funktion skal opdateres. Billederne har fået name Thumb01, Thumb02, Thumb03 .. thumb08.

Billederne der skal indsættes ligger ligeledes i et array.

Det jeg nu ønsker er lettest, hurtigst og ikke mindst, mindst krævende for computeren, at skifte billederne ud.

Første havde jeg blot skiftene til at ligge noget lignende:

document.images.Thumb01.src    = preload[input].src;
document.images.Thumb02.src    = preload[input + 1].src;
document.images.Thumb03.src    = preload[input + 2].src;
...

Jeg skal dog have lavet noget validering på input, hvorfor jeg tænkte det måske ville være lettere at opdatere ved hjælp af en løkke.

Jeg indsatte de otte billeders navn i et array, og forsøgte herefter igennem en løkke at opdatere.

var thumbname = Array("thumb01", "thumb02", "thumb03", "thumb04", "thumb05", "thumb06", "thumb07", "thumb08");
for (j = 0; j < 8; j++) {
// noget tjek her som ikke kommer sagen ved!
    document.images.thumbname[j].src  = preload[input + j].src;
}

Det virker dog ikke. Nogle der kan hjælpe mig lidt på vej?
Avatar billede baitianlong Nybegynder
03. december 2004 - 18:29 #1
Prøv med:

var thumbname = Array("thumb01", "thumb02", "thumb03", "thumb04", "thumb05", "thumb06", "thumb07", "thumb08");
for (j = 0; j < 8; j++) {
    var obj = "document.images."+thumbname[j];
    obj.src  = preload[input + j].src;
}

:)
Avatar billede nicklasb Nybegynder
03. december 2004 - 20:21 #2
den virker desværre lige så skidt :S
Avatar billede baitianlong Nybegynder
03. december 2004 - 23:48 #3
hvad er "input"?
Avatar billede nicklasb Nybegynder
04. december 2004 - 09:55 #4
alt efter hviket billede der vises er det eksempelvis 0, 1, 2 ... 45.

Det der egentligt skal koges ned er følgende:

var num = input - 2;
if (num >= 0 && num < numofpic) {
    document.images.Thumb01.src = preload[num].thumb;
} else {
    document.images.Thumb01.src = "image/gallery/nopic.jpg";
}
num++;
if (num >= 0 && num < numofpic) {
    document.images.Thumb02.src = preload[num].thumb;
} else {
    document.images.Thumb02.src = "image/gallery/nopic.jpg";
}
num++;
... (vises her for de to første)
Avatar billede baitianlong Nybegynder
04. december 2004 - 14:33 #5
Måske er problemet forskellen på store og små t'er. I dit array er det små t'er men i din oprindelige kode er det store T'er
Avatar billede nicklasb Nybegynder
04. december 2004 - 16:04 #6
nej, virker heller ikke.. ;)
Avatar billede baitianlong Nybegynder
04. december 2004 - 16:08 #7
pokkers også. Jeg troede lige jeg havde fundet guldkornet
Avatar billede roenving Novice
05. december 2004 - 08:09 #8
document.images.[thumbname[j]].src  = preload[input + j].src; !-)
Avatar billede nicklasb Nybegynder
05. december 2004 - 10:39 #9
jeg kan sgu ikke få det til at virke, og frygter snart for at jeg bare spilder jeres tid, fordi fejlen måske ligger et helt andet sted.
Jeg har postet sidens kilde herunder. Sådan som den står nu, virker udskriftningen af billederne. Udkommenteres den lange version, og benyttes den korte med løkken, virker det dog ikke!

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <title></title>
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1 / latin1">
</head>
<body>
  <script language="JavaScript" type="text/javascript">
    var currentview = 0;
    var pic                                            = [
        {"thumb":"thumbnail/01.jpg","pic":"image/gallery/photo/01.jpg"},
        {"thumb":"thumbnail/02.jpg","pic":"image/gallery/photo/02.jpg"},
        {"thumb":"thumbnail/03.jpg","pic":"image/gallery/photo/03.jpg"},
        {"thumb":"thumbnail/04.jpg","pic":"image/gallery/photo/04.jpg"},
        {"thumb":"thumbnail/05.jpg","pic":"image/gallery/photo/05.jpg"},
    ];
    var numofpic                                        = pic.length;

    var preload                                        = new Array();
    for (i = 0; i < numofpic; i++){
        preload[i]                                      = new Image();
        preload[i].thumb                                = pic[i].thumb;
        preload[i].src                                  = pic[i].pic;
    }

    function thumbnail() {
        var thumbname = Array("Thumb01", "Thumb02", "Thumb03", "Thumb04", "Thumb05", "Thumb06", "Thumb07");
        var num = currentview - 2;
//        for (j = 0; j < 7; j++, num++) {
//            if (num >= 0 && num < numofpic) {
//                document.images.[thumbname[j]].src = preload[num + j].src;
//            } else {
//                document.images.[thumbname[j]].src = "nopic.jpg";
//            }
//        }
       
       
var num = currentview - 2;
if (num >= 0 && num < numofpic) {
    document.images.Thumb01.src = preload[num].thumb;
} else {
    document.images.Thumb01.src = "nopic.jpg";
}
num++;
if (num >= 0 && num < numofpic) {
    document.images.Thumb02.src = preload[num].thumb;
} else {
    document.images.Thumb02.src = "nopic.jpg";
}
num++;
if (num >= 0 && num < numofpic) {
    document.images.Thumb03.src = preload[num].thumb;
} else {
    document.images.Thumb03.src = "nopic.jpg";
}
num++;
if (num >= 0 && num < numofpic) {
    document.images.Thumb04.src = preload[num].thumb;
} else {
    document.images.Thumb04.src = "nopic.jpg";
}
num++;
if (num >= 0 && num < numofpic) {
    document.images.Thumb05.src = preload[num].thumb;
} else {
    document.images.Thumb05.src = "nopic.jpg";
}
num++;
if (num >= 0 && num < numofpic) {
    document.images.Thumb06.src = preload[num].thumb;
} else {
    document.images.Thumb06.src = "nopic.jpg";
}
num++;
if (num >= 0 && num < numofpic) {
    document.images.Thumb07.src = preload[num].thumb;
} else {
    document.images.Thumb07.src = "nopic.jpg";
}

       
    }
  </script>
  <img src="nopic.jpg" name="Thumb01" width="100" height="100">
  <img src="nopic.jpg" name="Thumb02" width="100" height="100">
  <img src="nopic.jpg" name="Thumb03" width="100" height="100">
  <img src="nopic.jpg" name="Thumb04" width="100" height="100">
  <img src="nopic.jpg" name="Thumb05" width="100" height="100">
  <img src="nopic.jpg" name="Thumb06" width="100" height="100">
  <img src="nopic.jpg" name="Thumb07" width="100" height="100">
  <script language="JavaScript" type="text/javascript">
    thumbnail()
  </script>
</body>
</html>
Avatar billede roenving Novice
05. december 2004 - 10:42 #10
Gaab, der var et punktum for meget:

document.images[thumbname[j]].src  = preload[input + j].src; !-)
Avatar billede nicklasb Nybegynder
05. december 2004 - 10:43 #11
hov, kommaet efter det sidte billede, i arrayet skal selvfølgelig ikke være der.. :)
Avatar billede nicklasb Nybegynder
05. december 2004 - 10:55 #12
TAK! Du er gud!! ;)

Men hvorfor skal der ikke være et punktum imellem? Kan ikke se logikken i det. Gør det ikke ligefrem lettere at lære.. :S
Avatar billede roenving Novice
05. december 2004 - 11:17 #13
Et punktum benyttes til at angive en metode eller egenskab på et objekt, men her skal du angive et index til et element i en collection, som nærmest fungerer som et associativt array !-)

-- Velbekomme '-)
Avatar billede roenving Novice
06. december 2004 - 00:28 #14
-- 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