Avatar billede marx Nybegynder
04. juli 2003 - 02:43 Der 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...

Forstod i den?

/marx
Avatar billede ahv Nybegynder
04. juli 2003 - 02:45 #1
<script language=javascript>
nummer=Math.round(Math.random()*2)+1
if(nummer==1){
var billede="<img src=0.gif>" }
if(nummer==2) {
var billede="<img src=1.gif>" }
if(nummer==3) {
var billede="<img src=2.gif>" }
document.write(billede)
</script>
Avatar billede marx Nybegynder
04. juli 2003 - 02:47 #2
Damn u r fast...

sætter jeg det bare ind der hvor jeg normalt ville sætte et enkelt billede ind?
Avatar billede ahv Nybegynder
04. juli 2003 - 02:47 #3
Så en med 10 ;o)

<script language=javascript>
nummer=Math.round(Math.random()*9)+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>" }
if(nummer==4) {
var billede="<img src=4.gif>" }
if(nummer==5) {
var billede="<img src=5.gif>" }
if(nummer==6) {
var billede="<img src=6.gif>" }
if(nummer==7) {
var billede="<img src=7.gif>" }
if(nummer==8) {
var billede="<img src=8.gif>" }
if(nummer==9) {
var billede="<img src=9.gif>" }
if(nummer==10) {
var billede="<img src=10.gif>" }
document.write(billede)
</script>
Avatar billede marx Nybegynder
04. juli 2003 - 02:49 #4
tak, tester lige...
Avatar billede ahv Nybegynder
04. juli 2003 - 02:51 #5
Eksempel ->

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

Der hvor du ønsker dit billede.
Avatar billede marx Nybegynder
04. juli 2003 - 02:53 #6
LOL, så har jeg gjort det forkert... prøver igen
Avatar billede marx Nybegynder
04. juli 2003 - 02:57 #7
hmm, jeg har ikke brugt:
<script type="text/javascript">document.write(billede)</script>

men det virker...
tjek: www.marxworld.dk/index.htm -> Enten B2 eller en masse biler..
Avatar billede ahv Nybegynder
04. juli 2003 - 02:58 #8
Fint så :o)
Avatar billede marx Nybegynder
04. juli 2003 - 02:58 #9
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?
Avatar billede marx Nybegynder
04. juli 2003 - 03:01 #10
ok... den starter ikke med B2'eren hver gang :-))

Og da jeg testede igen, kom UNDEFINED ikke frem.

mystik, eller er der en forklaring bag?
Avatar billede ahv Nybegynder
04. juli 2003 - 03:01 #11
Det burde være random det billede den kommer med.
Avatar billede ahv Nybegynder
04. juli 2003 - 03:04 #12
Den laver bare et random, det er forklaringen ;o)
Avatar billede marx Nybegynder
04. juli 2003 - 03:07 #13
ok, men der jo lidt skidt, hvis den af og til kommer med UNDEFINED i stedet for et billede...
Avatar billede ahv Nybegynder
04. juli 2003 - 03:08 #14
Den kommer den ikke med her? Jeg vil smutte i seng ser på det imorgen når jeg står op.
Avatar billede marx Nybegynder
04. juli 2003 - 03:11 #15
hmm, den kommer vist ik mere... heldigvis!

tak for hjælpen!
Avatar billede roenving Novice
04. juli 2003 - 03:17 #16
>>ahv

-- du har lavet det igen *gg*

du skal bruge Math.floor og IKKE Math.round !!-)
Avatar billede marx Nybegynder
04. juli 2003 - 03:19 #17
roenving:

Hvad er forskellen?
Avatar billede roenving Novice
04. juli 2003 - 03:52 #18
se et nemt eksempel

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
Avatar billede marx Nybegynder
04. juli 2003 - 03:58 #19
ok, så med FLOOR, er der lige stor chance for hvilket af billederne der bliver vist?

har 7 på nuværende tidspunk.

Kan man have 15 eller 20 billeder liggende?
Avatar billede roenving Novice
04. juli 2003 - 04:09 #20
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>
Avatar billede roenving Novice
04. juli 2003 - 04:12 #21
Man kunne selvfølgelig også putte preloaderen ind i en løkke:

<script language="javascript" type="text/javascript">
var imgs = new Array();
for(i=0;i<17;i++){
imgs[i] = new Image;
imgs[i].src = "billede"+(i+1)+".jpg";
}
</script>

Hvis de er nummereret fortløbende ,-)
Avatar billede roenving Novice
04. juli 2003 - 04:13 #22
à propos 03:58:53

, så ja, man får lige mange af dem, men _meget_ vigtigere, man får så mange man forventer !!o]
Avatar billede marx Nybegynder
04. juli 2003 - 04:14 #23
cachen...?

Kan du ik skære det ud i pap for mig, hvad fordelen ved din kode er, i forhold til ahv's?
Avatar billede marx Nybegynder
04. juli 2003 - 04:16 #24
jeg er ikke inde i programmeringssprog, så jeg ka hurtigt falde af :-)

Lidt HTML og CSS er hvad det er blevet til, og det kan man jo dårlig kalde programmering!
Avatar billede roenving Novice
04. juli 2003 - 04:52 #25
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 ...
Avatar billede marx Nybegynder
04. juli 2003 - 05:57 #26
Tak for uddybningen!

Men kører med Alexanders nu, da det kører fino.
Avatar billede roenving Novice
04. juli 2003 - 12:40 #27
U're welcome -- bare du fik rettet den der round til floor -- og det gjorde du !-)
Avatar billede marx Nybegynder
04. juli 2003 - 13:08 #28
yep :-)
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