Sebastian Becker: cross browser random pictures

Beitrag lesen

Hallo, Calocybe,

Danke für die Hilfe ...

// Zufallsfunktion
var num = Math.round((picCount - 1) * Math.random());

Das geht so nicht. Damit kannst Du auch gut mal num == -1 bekommen, und da num dann als Index in die Arrays verwendet wird, wuerde das ein gelegentliches undefined ganz gut erklaeren. Besser:

var num = Math.floor(picCount * Math.random() - 1);

Das stimmt meines Erachtens nicht; Math.random() liegt im Original-Skript immer zwischen 0 und 1, picCount ist mindestens 2, somit ist der Wert immer positiv und wird im vorliegenden Fall durch Math.round auf Werte zwischen 0 und 4 gerundet. Das ergibt auch die Ausgabe per alert(num).

In der vorgeschlagenen Alternative kann num hingegen zu -1 werden, wenn picCount * Math.random() kleiner als 1 wird, was zu undefined als Ausgabe führt.

Bitte korrigiere mich, falls ich mich irre!

Gut sind auf jeden Fall die Hinweise auf die wohl falsche Korrektur der Abfrage nach undefined und auf die automatische Feststellung der Bildanzahl durch var picCount = randPic.length. Dadurch wird die Gefahr, sich bei einer Neukonfiguration der Bilder zu vertun, geringer.

Grüße, Sebastian