Avatar billede geekpower Nybegynder
19. juli 2002 - 21:16 Der er 52 kommentarer og
1 løsning

Tilfældigt billede

Hejsa,
jeg ved spørgsmålet nok har været oppe 1000 men jeg har altså ikke kunnet finde et svar der tilfredsstillede mig...
Okay jeg forskellige mapper rundt omkring der alle hedder thumbnails som jeg gerne ville tage forskellige billede fra og vise på mine sider....

Altså den skal kunne tage et tilfældigt billede, fra forskellige mapper hvis det er muligt.

Billederne hedder fx thumb_103-0317_IMG.jpg men det næste billede heddder ikke nødvendigvis fx thumb_103-0318_IMG...men starter alle med thumb hvis det er til en hjælp og ender med .jpg....

-Har jeg sat for høje mål eller sidder der et lille geni der vil hjælpe en lille stakkel der er havnet på en lidt for stor opgave....
-TAK!
Avatar billede baitianlong Nybegynder
19. juli 2002 - 21:32 #1
Jeg er ikke den store javaScripter. Men dette løser dit problem, tror jeg...

<script>
var0 = Math.round(Math.random(400)*1000);
var1 = "0";
var2 = "thumb_103-" + var1 + var0 + "_IMG.jpg";
document.write("<img src ='" + var2 + "'>");
document.write(var2);
</script>
Avatar billede jakoba Nybegynder
19. juli 2002 - 21:45 #2
lav et array med adresserne på de billeder der skal vælges imellem:

<script type='text/javascript'>

var udvalg = new Array(
      "bilder/thumb_103-0317_IMG.jpg",
      "tur_i_bilka/thumb_103-0101.jpg",
      "giffer/thumb_sailormoon.gif",
// osv osv,
// der skal dog ikke , efter allersidste:
      "motorcykel/thumb_103-1234_IMG.jpg"
                        );
var valgt = Math.floor(Math.random()*udvalg.length);

// skrive billedet som lequet viser:
document.write("<img src ='" + udvalg[valgt] + "'>");

</script>

mvh JakobA
Avatar billede jakoba Nybegynder
19. juli 2002 - 21:45 #3
Ups. lequet -> legende.dk    sorry
Avatar billede geekpower Nybegynder
19. juli 2002 - 21:46 #4
Ja ja, det er da en start, Rom blev jo ikke bygget på en dag!
1) Filen skal så ligge i samme mappe, det duer ikke....
2) Det er yderst sjælden den viser billedet da billederne ikke kommer i en række følge som jeg sagde, de hedder ikke altid det samme så det er desværre for sjælden at den viser et billede...
3) eller godt!!
Avatar billede geekpower Nybegynder
19. juli 2002 - 21:50 #5
Hejsa, okay til den sidste fra JakobA:
1) Jeg kan ikke sidde og skrive hver filnavn da der er omkring 100 og vokser hver dag.
2) ellers kanon!
Avatar billede jakoba Nybegynder
19. juli 2002 - 21:52 #6
Ja så bliver det svært uden php eller asp til at læse i mapperne hvilke thumbs der er at vælge imellem :-))
Avatar billede geekpower Nybegynder
19. juli 2002 - 21:56 #7
Okay, for at lette arbejdet så har jeg lavet så billederne hedder billede1.jpg, billede2.jpg osv!
Nu skal vi blot have kombineret det så det tager et stigende billede som første kilde, men fra flere mapper som i 2. kildekode....
Går da godt fremad nu via fælles hjælp *s*
Avatar billede geekpower Nybegynder
19. juli 2002 - 21:58 #8
Nå ja, og så skal alle billeder komme fra lade os sige wwww.domæne.dk/hej/arkiv/FLERE MAPPER AT VÆLGE MELLEM !!
Det skal nemlig på mange sider der ligger rundt omkring så det må vel være lettest at skrive en sti som så skal kombineres med mappe navne..
Avatar billede baitianlong Nybegynder
19. juli 2002 - 21:59 #9
Den kan jo ikke læse i mappen hvad billederne hedder, så du bliver vel nødt til at sætte dem i system !!

Man kan tilføje en random på mappenavnet til min kode (o;

mappe = Math.round(Math.random(5) + 1);
if (mappe = 1) {
  navn = "pics1";
} else if (mappe = 2) {
  navn = "pics2";
}

osv...

document.write("<img src ='" + navn + "/" + var2 + "'>");


Jeg kæmper videre (o;
Avatar billede jakoba Nybegynder
19. juli 2002 - 22:26 #10
så 2 arrays nu:

<script type='text/javascript'>

var mapper = new Array(
      "bilder",
      "tur_i_bilka",
      "giffer",
// osv osv,
// der skal dog ikke , efter allersidste:
      "motorcykel"
                        );

var udvalg = new Array(
      "billede1.jpg",
      "billede2.jpg",
      "billede3.jpg",
// osv osv,
// der skal dog ikke , efter allersidste:
      "billedeN.jpg"
                        );
var valg1 = Math.floor(Math.random()*mapper.length);
var valg2 = Math.floor(Math.random()*udvalg.length);

// skrive billedet som lequet viser:
document.write("<img src ='" + mapper[valg1] +"/" +udvalg[valg2] + "'>");

</script>

men det kræver stadig at ALLE mapperne har alle de billedeN.jpg thumbs du lister.

mvh JakobA
Avatar billede baitianlong Nybegynder
19. juli 2002 - 23:00 #11
Hvem hulen er ham lequet ((o;
Avatar billede jakoba Nybegynder
20. juli 2002 - 00:03 #12
ham her: http://www.eksperten.dk/bruger.phtml?navn=lequet
( muligvis hende, who knows :-)
Avatar billede geekpower Nybegynder
20. juli 2002 - 00:17 #13
Okay, nu har jeg rettet og tilpasset lidt...
Billederne hedder godt nok thumb_billede001 osv...
-´Men går så ud fra at jeg blot tilpasser det og skriver thumb_billede0NN ?? Men det giver jo et problem hvis der ikke er 99 ikke??
Kan man så lave sådan at den skal holde sig under X antal billeder...altså der er jo afsat til 999 billeder i en mappe...så kan man jo skrive ved under 100 at der er 0NN ikke, eller hvad?? Men så under 20 billeder så er det jo dumt hvis den går længere op..
Avatar billede geekpower Nybegynder
20. juli 2002 - 00:21 #14
Ups, N  er ikke afsat til X billede....troede den var det...den skulle jo gerne sige noget i den stil så man ikke skal skrive selv frem til billede 367 i flere mapper...for meget arbejde...
Avatar billede geekpower Nybegynder
20. juli 2002 - 00:28 #15
Det skal "bare" kombineres med legendes script som tager X....trór jeg...hjælp! Sikker på at vi finder løsningen i morgen!
Avatar billede geekpower Nybegynder
20. juli 2002 - 18:16 #16
Hej, ikke nogen nye forslag???
Avatar billede jakoba Nybegynder
20. juli 2002 - 18:25 #17
Du skriver som tankerne flyver igennem hovedet på dig, og så er det svært at følge med og forstå hvad du egentlig mener.
eg: "så kan man jo skrive ved under 100 at der er 0NN ikke, eller hvad??"

prøv at fortælle klart hvorlangt du er kommet, så kan vi måske hjælpe videre derfra.

mvh JakobA
Avatar billede geekpower Nybegynder
20. juli 2002 - 18:50 #18
Det du referer var fordi jeg havde misforstået noget..
<!---Så læs her-->
Okay, det ser godt ud med JakobA's, men der rettes lidt... Billederne hedder thumb_billede001 osv... Men jeg gider ikke skrive alle billed-navne ind som dit script ligger op til, nemmere hvis man kunne gøre noget i stil med den første fra "legende.dk" som tager noget af filnavnene og gør det automatisk...
-men her kommer så endnu et problem da de hedder "thumb_billede001" som jo gør at man kan have op til 999 billeder...så foreslog jeg om man kunne skrive at max måtte gå op til billede nr. thumb_billede041 ´som så skulle kunne tilpasses de enkelte mapper efter hvor mange billeder de indeholder... Forståeligt?? ved godt det måske stadig er lidt sludret...
Avatar billede jakoba Nybegynder
20. juli 2002 - 18:57 #19
jeg kan gå med til at det er en masse arbejde at skrive alle billednavnene. Vil det også være formeget at bedligeholde en fil der hedder info.js i hver mappe og så i den skrive en linie som:

var <mappensnavn> = 25;  // antal thumbs i denne mappe.

eg i mappen  motorcykler skulle der så ligge en info.js fil der indeholdt linien:

var motorcykler = 46;    // antal motocykel thumbs.

når du så tilføjede nye billeder i en mappe skal den mappes info.js fil opdateres.

mvh JakobA
Avatar billede geekpower Nybegynder
20. juli 2002 - 18:59 #20
Nej det ville være fint...
Avatar billede jakoba Nybegynder
20. juli 2002 - 19:00 #21
Ups.  bedligeholde -> vedligeholde

Den løsning jeg lægger op til kræver at dine mapper har navne der samtidig er lovlige som navne på javascript variable. dvs navne der starter med et bogstav og kun indeholder bogstaver og cifre derefter.
Avatar billede geekpower Nybegynder
20. juli 2002 - 19:17 #22
Øh ikek lige helt forstået... altså mapperne hedder gerne noget i stil med "sommerlejr2002"...
Avatar billede jakoba Nybegynder
20. juli 2002 - 19:18 #23
<script type='text/javascript'>

var mapper = new Array(
      "bilder",
      "tur_i_bilka",
      "giffer",
// osv osv,
// der skal dog ikke , efter allersidste:
      "motorcykel"
                        );
for ( i=0; i<mapper.length; i++ ) {
    document.write( "<sc"+"ript type='text/javascript' src='"+mapper[i]+"/info.js'></sc"+"ript>" );
}
</script>

<script type='text/javascript'> <!-- // NB: scriptet er nu opdelt i 2 sektioner

var antal = new Array();
for ( i=0; i<mapper.length; i++ ) {
    antal[i] = self[ mapper[i] ] || 10;
          // hvis du glemmer at lave en info.js fil i en mappe
          // går programmet ud fra der er 10 billeder i den.
}
var valg1 = Math.floor(Math.random()*mapper.length);
var mappe = mapper[ valgt1 ];      // den valgte mappes mappesti
var maxtn = antal[ valgt ];        // størtst tn-mummer i denne mappe
var valg2 = 1 +Math.floor( Math.random()*maxtn );
    valg2 = "000"+valg2;
var tnNavn = mappe +"/" +"thumb_billede" + valg2str.substr( valg2.length-3 ) +".jpg";

// skrive billedet som lequet viser:
document.write("<img src ='" + tnNavn + "'>");

// --> </script>
Avatar billede jakoba Nybegynder
20. juli 2002 - 19:29 #24
"sommerlejr2002" er et helt fint navn. det er tegn som , . - + ? ( ) [ ] + * / " og mellemrum der ikke må forekomme i mappenavnet.
Avatar billede geekpower Nybegynder
20. juli 2002 - 19:30 #25
"var mappe = mapper[ valgt1 ];      // den valgte mappes mappesti"
- Hvordan skal jeg udfylde den?
Avatar billede jakoba Nybegynder
20. juli 2002 - 19:33 #26
Du skal ikke udfylde den. Den fik sin værdi da skev dine mappetier i arrayet mappe ovenover.
Avatar billede jakoba Nybegynder
20. juli 2002 - 19:34 #27
Ups  arrayet mappe  ->  arrayet mapper  (tilføjet r i mapper)
Avatar billede geekpower Nybegynder
20. juli 2002 - 19:35 #28
Okay og så sletter jeg det "r" ikke? Men den melder stadig fejl i den linie og siger at valg1 ikke er defineret...
Avatar billede geekpower Nybegynder
20. juli 2002 - 19:36 #29
Hvis det er en fejl med mappe-->mapper er den så ikke gal flere steder?
Avatar billede jakoba Nybegynder
20. juli 2002 - 19:41 #30
Nej, nej, nej.  Du skal ikke slette nogen r'er. det var fordi jeg stavede forkert i Kommentar: jakoba 20/07-2002 19:33:12
Avatar billede geekpower Nybegynder
20. juli 2002 - 19:45 #31
Oki...mend en melder stadig fejl der...
Avatar billede jakoba Nybegynder
20. juli 2002 - 19:52 #32
har du mulighed for at lægge siden siden på nettet og give et link så vi kan debugge?
Avatar billede geekpower Nybegynder
20. juli 2002 - 19:55 #33
Den indeholder bare den kode du skrev.....
Avatar billede jakoba Nybegynder
20. juli 2002 - 19:56 #34
Ups.  Jeg glemte at skrive den første sektion stå i toppen af filen, etsted imellem <head> og </head>
Avatar billede geekpower Nybegynder
20. juli 2002 - 20:03 #35
Nå okay!
Avatar billede geekpower Nybegynder
20. juli 2002 - 20:04 #36
Kattens!! Stadig sammme fejl-meddelelse--
Avatar billede geekpower Nybegynder
20. juli 2002 - 20:06 #37
<!-- HVad er galt--->

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type='text/javascript'>

var mapper = new Array(
      "sommerlejr2002/thumbnails",
      "sommerlejr2001/thumbnails",
    // osv osv,
// der skal dog ikke , efter allersidste:
      "hej/thumbnails"
                        );
for ( i=0; i<mapper.length; i++ ) {
    document.write( "<sc"+"ript type='text/javascript' src='"+mapper[i]+"/info.js'></sc"+"ript>" );
}
</script>
</head>

<body bgcolor="#FFFFFF" text="#000000">


<script type='text/javascript'> <!-- // NB: scriptet er nu opdelt i 2 sektioner

var antal = new Array();
for ( i=0; i<mapper.length; i++ ) {
    antal[i] = self[ mapper[i] ] || 10;
          // hvis du glemmer at lave en info.js fil i en mappe
          // går programmet ud fra der er 10 billeder i den.
}
var valg1 = Math.floor(Math.random()*mapper.length);
var mappe = mapper[ valgt1 ];      // den valgte mappes mappesti
var maxtn = antal[ valgt ];        // størtst tn-mummer i denne mappe
var valg2 = 1 +Math.floor( Math.random()*maxtn );
    valg2 = "000"+valg2;
var tnNavn = mappe +"/" +"thumb_billede" + valg2str.substr( valg2.length-3 ) +".jpg";

// skrive billedet som lequet viser:
document.write("<img src ='" + tnNavn + "'>");

// --> </script>
</body>
</html>
Avatar billede jakoba Nybegynder
20. juli 2002 - 20:20 #38
denne mappe ikke som navn. der er et /-tegn i:  hej/thumbnails

Har du lavet de 3 info.js filer og lagt dem i deres rigtig mapper?
Avatar billede geekpower Nybegynder
20. juli 2002 - 20:27 #39
Nu sådan...

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type='text/javascript'>

var mapper = new Array(
      "sommerlejr2002/thumbnails",
      "sommerlejr2001/thumbnails"
    // osv osv,
// der skal dog ikke , efter allersidste:

                        );
for ( i=0; i<mapper.length; i++ ) {
    document.write( "<sc"+"ript type='text/javascript' src='"+mapper[i]+"/info.js'></sc"+"ript>" );
}
</script>
</head>

<body bgcolor="#FFFFFF" text="#000000">


<script type='text/javascript'> <!-- // NB: scriptet er nu opdelt i 2 sektioner

var antal = new Array();
for ( i=0; i<mapper.length; i++ ) {
    antal[i] = self[ mapper[i] ] || 10;
          // hvis du glemmer at lave en info.js fil i en mappe
          // går programmet ud fra der er 10 billeder i den.
}
var valg1 = Math.floor(Math.random()*mapper.length);
var mappe = mapper[ valgt1 ];      // den valgte mappes mappesti
var maxtn = antal[ valgt ];        // størtst tn-mummer i denne mappe
var valg2 = 1 +Math.floor( Math.random()*maxtn );
    valg2 = "000"+valg2;
var tnNavn = mappe +"/" +"thumb_billede" + valg2str.substr( valg2.length-3 ) +".jpg";

// skrive billedet som lequet viser:
document.write("<img src ='" + tnNavn + "'>");

// --> </script>
</body>
</html>

I "info.js" står der blot følgende "var sommerlejr2002 = 29;"
Avatar billede jakoba Nybegynder
20. juli 2002 - 20:54 #40
nemlig, og tilsvarende i den anden mappe.
I "sommerlejr2001/info.js" står der blot følgende "var sommerlejr2001 = 29;"
Avatar billede geekpower Nybegynder
20. juli 2002 - 20:59 #41
Hvad er der så galt når den stadig melder samme fejl som til start..
Avatar billede jakoba Nybegynder
20. juli 2002 - 21:05 #42
Ups. jeg har jo også stavet valgt1 anderledes det 2 første steder det skal bruges:
var mappe = mapper[ valg1 ];      // den valgte mappes mappesti
var maxtn = antal[ valg1 ];      // størtst tn-mummer i denne mappe
Avatar billede baitianlong Nybegynder
20. juli 2002 - 21:08 #43
Der er gang i den ((o; . -tror jeg vil komme i javascript kategorien oftere ((((o;
Avatar billede jakoba Nybegynder
20. juli 2002 - 21:20 #44
og en fejl til:  valg2str  skal være  valg2
var tnNavn = mappe +"/" +"thumb_billede" + valg2.substr( valg2.length-3 ) +".jpg";
Avatar billede jakoba Nybegynder
20. juli 2002 - 21:20 #45
legende.dk >> ja gør nar du bare :-))
Avatar billede baitianlong Nybegynder
20. juli 2002 - 21:22 #46
Syntax Error
Avatar billede geekpower Nybegynder
20. juli 2002 - 22:03 #47
SÅDAN!!!!!!!!!!!!!!!!!!!!!! Det virker jo!!!
MANGE MANGE TAK!!!
Avatar billede geekpower Nybegynder
20. juli 2002 - 22:14 #48
NEJ!!!
Når jeg linker til mappen på Internettet går det galt...
var mapper = new Array(
      "http://wwww.domæane.dk/sommerlejr2002/thumbnails"
- Siderne ligger jo rundt omkring så den skal jo have beskrevet hvor siden ligger men min måde melder den fejl...hvad så??
Avatar billede jakoba Nybegynder
20. juli 2002 - 22:20 #49
filen med scriptet skulle vel også ligge derude ?? så kan du bruge den samme relative mappesti der:
var mapper = new Array(
      "sommerlejr2002",

eller er der altid en extra indre mappe med thumbnails? så kan vi evt sætte det ind i scriptet nedenunder.
Avatar billede geekpower Nybegynder
20. juli 2002 - 22:24 #50
Okay, scriptet ligger i flere sider, i forskelige mapper, og der skal jo derfor defineres hvor mappen er da den ikke altid ligger i en submappe... Forstod ikke den med en ekstra indre mappe med thumbmails....
Avatar billede jakoba Nybegynder
20. juli 2002 - 22:38 #51
Der er noget basalt uheldigt her.
et javascript der bliver hentet fra et andet domæne end den fil der henter det kan ikke samarbejde med script i filen. (Det er en securityregel, da hacking ellers ville blive alt for nemt).

Kan vi skrive antal arrayet direkte ind i scriptet? Så er data samlet, men du skal hen og rette i filen hvergang til fjerner eller tilføjer billeder:

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type='text/javascript'>

var mapper = new Array(
      "sommerlejr2002/thumbnails",  // nu kan enhver lovlig mappesti bruges
      "sommerlejr2001/thumbnails"
                        );
var antal = new Array(
      29,            // antal billeder i sommerlejr2002/thumbnails
      32            // antal billeder i sommerlejr2001/thumbnails
                        );

</script>
</head>

<body bgcolor="#FFFFFF" text="#000000">


<script type='text/javascript'> <!-- // NB: scriptet er nu opdelt i 2 sektioner

var valg1 = Math.floor(Math.random()*mapper.length);
var mappe = mapper[ valg1 ];      // den valgte mappes mappesti
var maxtn = antal[ valg11 ];        // størtst tn-mummer i denne mappe
var valg2 = 1 +Math.floor( Math.random()*maxtn );
    valg2 = "000"+valg2;
var tnNavn = mappe +"/thumb_billede" + valg2.substr( valg2.length-3 ) +".jpg";

// skrive billedet som lequet viser:
document.write("<img src ='" + tnNavn + "'>");

// --> </script>
</body>
</html>

der er så ikke længere brug for info.js filerne
Avatar billede geekpower Nybegynder
21. juli 2002 - 02:31 #52
Det er fint! Til interesserede lig dog mærke til en stavefejl med var maxtn = antal[ valg11 ];        // størtst tn-mummer i denne mappe
som skal være:
var maxtn = antal[ valg1 ];        // størtst tn-mummer i denne mappe

-------
Nå, men lige et sidste spørgsmål...her til at starte med er der kun en mappe...kan man ikke nøjes med at lave en mappe....den viser ikke altid et billede hvis man fjerne den ene mappe og tilhørende....Men mange tak!
Avatar billede jakoba Nybegynder
21. juli 2002 - 02:40 #53
i det der array antal kan du evt skrive et par tal mere.

var mapper = new Array(
      "sommerlejr2002/thumbnails"
                        );
var antal = new Array(
      29,            // antal billeder i sommerlejr2002/thumbnails
      32            // gylletal for at få 2 parametre
                        );

hvis man siger
  var varnavn = new Array( 25 );
får man et array med 25 uudfyldte elementer og det er ikke det vi ønsker her. men det gør ikke noget hvis det array får en celle eller to mere.

mvh JakobA
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