Avatar billede ohrt Nybegynder
01. oktober 2001 - 07:42 Der er 10 kommentarer og
1 løsning

Tilfældigt billede

Jeg har en side, hvor jeg gerne vil have en celle med et tilfældigt billede (udfra en mappe med fotos, forstås). Altså sådan, at der er et nyt billede (og også gerne tilhørende tekst og link evt. i en anden celle...) hver gang man besøger siden.
Krav: Ingen ASP, ingen FP extentions - dvs. go\' gammeldaws HTML og noget script.
Avatar billede nikolajdu Nybegynder
01. oktober 2001 - 09:00 #1
Sådan her måske??

<html>
<head>
    <title></title>
   
    <script>
    var linket = new Array(\'www.nikolajdu.dk\',\'www.eksperten.dk\',\'toldogskat.dk\');
    var billede = new Array(\'min.gif1\',\'min.gif2\',\'min.gif3\');
    var tekst = new Array(\'minTekst1\',\'minTekst2\',\'minTekst3\');
   
    function skift(){

    ran = Math.round(Math.random()*(linket.length-1));
   
    document.getElementById(\'herDu\').innerHTML = \"<a href=\'\"+linket[ran]+\"\'><img src=\'\"+billede[ran]+\"\'>\"+tekst[ran]+\"</a>\";

}
    </script>
</head>

<body onLoad=\"skift()\">

<table name\"tabellen\">
<tr>
    <td>1</td>
    <td>2</td>
</tr>
<tr>
    <td>3</td>
    <td name=\"herDu\" id=\"herDu\">&nbsp;</td>
</tr>
</table>


</body>
</html>
Avatar billede jakoba Nybegynder
01. oktober 2001 - 11:11 #2
nikolajdu >> brug random korrekt.
i eksemplet ovenfor er  linket.length == 3  så:
    ran = Math.round(Math.random()*(linket.length-1));
bliver til:
    ran = Math.round( Math.random()*2 );
Math.random()*2 genererer et tilfeldigt tal fra 0 til (men ikke med) 2
0-------------------------------1-------------------------------(2)
Math.roud deler så op så alt under 0.5 bliver 0.
alt fra 0.5 op imod 1.5 bliver 1
og alt fra 1.5 og op bliver 2
0--------------0|1--------------1--------------1|2-------------2(2)

Så din funktopn vil give 0 25% af gangene. 1 50% af gangene og 2 25% af gangene. (Ok jeg synes også at toldogskat.dk er mindre interresant end eksperten.dk, men er det vikelig din mening af nikolajdu.dk også skal forfordeles?)

brug hellere:
    ran = Math.floor( Math.random()*linket.length );
Math.random()*3 giver et tilfeldigt tal i intervallet 0 til (men ikke med) 3
0--------------------1--------------------2--------------------(3)
Math.floor trunkerer tallet til 0, 1 eller 2
0-------------------01-------------------12-------------------2
og nu kommer de 3 tal præcis lige tit.

mvh JakobA


Avatar billede nikolajdu Nybegynder
01. oktober 2001 - 11:24 #3
Jeg må indrømme at jeg aldrig har været god til at få random funktionen til at virke 100% random. Der er vist noget med at tage den aktuelle tid og regne lidt på den, kan bare ikke huske hvordan. :-)
Avatar billede nikolajdu Nybegynder
01. oktober 2001 - 11:30 #4
Anyway er 200 point da vist også lige i overkanten. 30 kan vist gøre det her.
Avatar billede ohrt Nybegynder
01. oktober 2001 - 11:54 #5
Den er 200 værd for mig, så...
Avatar billede ohrt Nybegynder
01. oktober 2001 - 11:54 #6
Jakoba: Tak for tilføjelsen
Avatar billede nikolajdu Nybegynder
01. oktober 2001 - 11:58 #7
oki doki. Håber du fik det til at virke :-)
Avatar billede ohrt Nybegynder
26. november 2001 - 13:01 #8
Yes - men siden blev overført til et site, hvor body-tagget overskrives, så onload-funktionen virker ikke. Er der en måde udenom body onload?
Avatar billede nikolajdu Nybegynder
26. november 2001 - 13:07 #9
Kan du ikke sætte <script>skift()</script> ind i slutningen af din html fil.
Avatar billede ohrt Nybegynder
26. november 2001 - 13:15 #10
KANON!
Tak for lynhurtig indsats!
Jeg havde prøvet at rykke scriptet ud, men havde sat det i starten. Derfor gik der kage i document.getElementById
Avatar billede nikolajdu Nybegynder
26. november 2001 - 13:16 #11
fino fino :-)
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