"Kasper Lindberg" <NoSp@m.invalid> writes:
> <script type="text/javascript">
> var rndnum;
> var filelist="sti til billede,sti til billede,...";
> //omdan til array
> var fileara=filelist.split(",");
Man kunne også skrive array direkte:
var fileara=["sti til billede",
"sti til billede",
//...
];
> function skiftimg(nr) {
> if (isNaN(nr)) {nr=Math.round(Math.random()*(fileara.length-1))}
Denne beregning giver 0 og (fileara.length-1) halv så stor chance
for at blive udtrukket som de andre tal. Brug i stedet:
nr = Math.floor(Math.random()*fileara.length);
Man skal generelt ikke bruge Math.round når man laver tilfældige tal :)
> //generer tilfældigt heltal forskelligt fra nr
Ikke så nødvendigt i de tilfælde hvor "nr" lige er blevet valgt
tilfældigt.
> do {
> rndnum=Math.round(Math.random()*fileara.length)
Samme problem.
> if (rndnum==fileara.length) {rndnum=nr}
> } while (rndnum == nr)
Prøv at skifte alt det ovenstående ud med:
var n = fileara.length;
rndnum = Math.floor(Math.random()*(n - (nr < n)));
if (rndnum >= nr) { rndnum++; }
Det giver et tal mellem 0 og fileara.length-1 der ikke er lig med nr.
> Hvis du ikke vil have det samme startbillede hver gang kan du bruge
>
> <body onload="skiftimg(Math.round(Math.random()*(fileara.length-1)))">
Koden giver allerede et tilfældigt billede hvis argumentet ikke er et
tal, så bare
onload="skiftimg();"
skulle være nok.
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:
http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'