Bitte um Scripterklärung (einfaches Script)
Mastershrimp
- javascript
Hallo!
Warum und wie wird bei folgendem Script eine Zufallsanzeige erzeugt?
<script type="Text/JavaScript">
<!--
var z= 5;
Banner = new Array(z);
Banner[0] = '<IMG SRC="pics/heading1.jpg" ALT="Mastershrimp.com Logo 1" BORDER=0>';
Banner[1] = '<IMG SRC="pics/heading2.jpg" ALT="Mastershrimp.com Logo 2" BORDER=0>';
Banner[2] = '<IMG SRC="pics/heading3.jpg" ALT="Mastershrimp.com Logo 3" BORDER=0>';
Banner[3] = '<IMG SRC="pics/heading4.jpg" ALT="Mastershrimp.com Logo 4" BORDER=0>';
Banner[4] = '<IMG SRC="pics/heading5.jpg" ALT="Mastershrimp.com Logo 5" BORDER=0>';
var jetzt=new Date();
var z=(jetzt.getSeconds())%5;
document.write(Banner[z]);
//-->
</script>
Warum wird bei jetzt.getSeconds()%5 eine Zahl zwischen 0 und 4 ausgegeben? Was passiert, wenn der Rest der Division z.B. "8" ist? Wird das Ergebnis dann so lange übergangen, bis eine passende Zahl herauskommt?
Ich verstehe es einfach nicht...
Kann mir jemand weiterhelfen?
Danke im Vorraus
Gruß
Mastershrimp
Hi!
Warum wird bei jetzt.getSeconds()%5 eine Zahl zwischen 0 und 4 ausgegeben? Was passiert, wenn der Rest der Division z.B. "8" ist?
Wenn ich mich recht entsinne, dann ist % der Modulo-Operator, d.h. er gibt immer NUR den Rest an. Eine Division durch 5 hat eben nur die Reste 0-4 und trifft somit dann immer einen der Arrayeinträge - Ergebnis: Eines der Banner wird "relativ zufällig" hingeschrieben.
MfG
Rouven
nabend,
Warum und wie wird bei folgendem Script eine Zufallsanzeige erzeugt?
is gar nix "zufällig" :)
var jetzt=new Date();
^hier holst du dir die aktuellen sekunden , ist ein wert zwischen 0 und 59
var z=(jetzt.getSeconds())%5;
hier wird dieser wert modulo dividiert (%, restwerdivision) was einen wert zwischen 0 und 4 ergibt.
document.write(Banner[z]);
hier wird eines der bilder angezeigt, abhängig von der sekunde in der das script aufgerufen wurde...
Ich verstehe es einfach nicht...
jetzt besser? :)
so long
hoagie
Hallo!
Das war mir eigentlich schon alles klar ;)
Der wesentliche Punkt den ich nicht verstand ist folgender gewesen:
var z=(jetzt.getSeconds())%5;
hier wird dieser wert modulo dividiert (%, restwerdivision) was einen wert zwischen 0 und 4 ergibt.
Beim Durchlesen deines Postings ist es mir dann wie Schuppen von den Augen gefallen: Bei Modulo wird deshalb ein Wert zwischen 0 und 4 ausgegeben, weil der Wert "5" ja schon wieder "0" wäre, oder?
Jetzt hab ichs glaub ich verstanden - ich blickte nie so richtig durch das Modulo-Zeugs durch ;)
Danke!
Hallo,
Jetzt hab ichs glaub ich verstanden - ich blickte nie so richtig durch das Modulo-Zeugs durch ;)
Das ist ganz einfach: Teile eine ganze Zahl durch eine ebensolche _ohne_ Brüche, also stecke den Teiler sooft rein, wie er ganz reinpaßt. Z.B. ist 17:5 = 3. Da bleibt aber ein Rest, nämlich 2 und das ist der Wert, den Modulo zurückgibt. Und eine durch 5 teilbare Zahl gibt %5 wie Du schon richtig erkannt hast eben 0 zurück.
Gruß, Andreas