19. juli 2002 - 21:16Der 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!
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] + "'>");
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!!
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*
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..
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.
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..
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...
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.
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...
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.
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.
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 + "'>");
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 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;"
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
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å??
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....
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:
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 + "'>");
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!
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
Synes godt om
Ny brugerNybegynder
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.