04. juli 2003 - 02:43Der er
27 kommentarer og 1 løsning
Skifte billeder
Hej,
Håber spørgsmålet skal kylles i denne kategori...
Jeg leder efter et script der kan generer billeder efter hver ny besøgende på en side. altså hvis man logger ind på siden, og så trykker F5, vil der skifte et nyt billede. Sådan kan man måske have 10 billeder liggende, som skifter for hvert besøgende...
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
<head> <script type="text/javascript"> nummer=Math.round(Math.random()*2)+1 if(nummer==1){ var billede="<img src=1.gif>" } if(nummer==2) { var billede="<img src=2.gif>" } if(nummer==3) { var billede="<img src=3.gif>" } </script> </head> <body> hej med dig her er et billede<br> <script type="text/javascript">document.write(billede)</script>
Så du placere altså -> <script type="text/javascript">document.write(billede)</script>
hmm, testede lige igen... åbnede et nyt vindue, og så B2'eren. Da jeg trykkede F5, stod der UNDEFINED, og da jeg trykkede F5 igen, kom der en masse biler frem..
Ka man gøre sådan, at den ikke starter med B2'eren hver gang?
random giver et tilfældigt tal mellem 0 og 0.99999999999999 (mener der skal være 15 betydende cifre ,-)
random * 10 giver altså imellem 0 og 9,999999999999
round af det vil give 11 forskellige resultater (0 til og med 10): 0 eller 10 i hver omkring 5 % af tilfældene (hhv. op til 0.499999 og 9.5 og derover) 1 til 9 i hver 10% af tilfældene (f.eks. 1.5 til 2.499999999999999)
floor vil give 10 forskellige resultater (0 til og med 9): ALLE i hver omkring 10% af tilfældene
Ingen problemer, jeg ville bare lave en preloader, så man ved reload ville have en fair chance for at billederen ikke var nået ud af cachen endnu ...
Og så kunne man jo lige så godt udnytte at javascript er født med 0 som bund i arrays, så:
i headeren: <script language="javascript" type="text/javascript"> var imgs = new Array(); imgs[0] = new Image; imgs[0].src = "billede1.jpg"; imgs[1] = new Image; imgs[1].src = "billede2.jpg"; imgs[2] = new Image; imgs[2].src = "billede3.jpg"; imgs[3] = new Image; imgs[3].src = "billede4.jpg"; imgs[4] = new Image; imgs[4].src = "billede5.jpg"; imgs[5] = new Image; imgs[5].src = "billede6.jpg"; imgs[6] = new Image; imgs[6].src = "billede7.jpg"; imgs[7] = new Image; imgs[7].src = "billede8.jpg"; imgs[8] = new Image; imgs[8].src = "billede9.jpg"; imgs[9] = new Image; imgs[9].src = "billede10.jpg"; imgs[10] = new Image; imgs[10].src = "billede11.jpg"; imgs[11] = new Image; imgs[11].src = "billede12.jpg"; imgs[12] = new Image; imgs[12].src = "billede13.jpg"; imgs[13] = new Image; imgs[13].src = "billede14.jpg"; imgs[14] = new Image; imgs[14].src = "billede15.jpg"; imgs[15] = new Image; imgs[15].src = "billede16.jpg"; imgs[16] = new Image; imgs[16].src = "billede17.jpg"; </script>
Og så placere koden hvor du vil have det ind: <script language=javascript> nummer=Math.floor(Math.random()*17); var billede="<img src="+imgs[nummer].src+">" document.write(billede) </script>
Typisk vil din browser gemme billeder og dele af sider, som du ikke lige kigger på i en slags hukommelse, som kaldes en cache (ordets betydning kan jeg ikke,-)
En anden slags cache som er nemmere at forklare, er det, som sker, hvis du hører en lydfil afspillet fra en cd eller fra harddisken:
For det første vil drevet (cd-rom-læseren eller harddisken) læse det næste stykke af disken for hurtigt at kunne svare, hvis processoren (computerens hjerne) vil have noget mere ...
For det andet vil processoren smide det næste som skal spilles af ind i RAM'en for den kan ikke være sikker på, at det som den skal have ligger lige efter det den lige brugte på disken ...
Browseren vil også prøve at forudse, hvad du vil, men dens chancer for at ramme rigtigt er ikke så stor som i tilfældet med lydfilen, så den har en konservativ tilgang til det:
Den gemmer simpelthen hvad du har brugt, det kunne jo være du skulle bruge det igen !-)
Hvilket også ofte er tilfældet f.eks. med roll-over-images eller sider, som fylder langt mere end en skærm ...
Preloaderen i dit tilfælde er _kun_ funktionel for alvor, hvis du også bruger dine billeder på andre undersider, eller hvis dele af din side udfyldes med andre ting og lignende tilfælde -- den vil dog i tilfælde, hvor brugeren trykker på F5 eller reloader på andre måder have den fordel, at billederne vil blive i cachen, så længe siden er der, simpelthen fordi de findes som objekter for browseren og ikke vil være nået ud, før de igen skal bruges ...
-- billeder som 'kun' loades ind i et img vil ikke være prioriteret i browserens husholdning med sin cache -- det vil billeder som er oprettet med en preloader !o]
hth jes
PS. Fordelen med min kode frem for Alexanders er kun at den alene skifter mellem 10 forskellige og *ikke* forsøger at finde det ikke-eksisterende 11. billede -- udover cachingen og den meget slanke kode inde i body-delen ...
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.