ChrisB: 2 Funktionen -> selbe Ausgabe .. warum?

Beitrag lesen

Hi,

Die erste Funktion liegt in der Datei dvds.js und heißt rndDVD() - die 2. in games.js mit dem namen rndGame()

In meiner Seite wird jedoch zweimal die Funktion rndDVD() ausgeführt, obwohl nur 1x aufgerufen.

Lerne, die *richtigen* Schlüsse zu ziehen.
Daraus, dass du zwei mal das gleiche Ergebnis erhältst, schliesst du hier naiver Weise, dass zwei mal die gleiche Funktion aufgerufen worden wäre.
Schon die simpleste aller Debug-Maßnahmen, eine (unterschiedliche) Ausgabe per alert zu Beginn der beiden Funktionen, hätte dir hier gezeigt, dass du im Irrtum bist.

Am Anfang glaubte ich es läge daran, dass beide scripts die selben variablennamen verwenden, aber selbst nach änderung besteht das Problem weiterhin.

Dass deine Pseudo-Zufallsfunktion ziemlicher Murks ist, deutete LX bereits an - lies bitte den Artikel Gleichverteilte Zufallszahlen erzeugen, der bringt dir bei, wie man's vernünftig macht.

Genau diese Zufallsfunktion ist es nämlich auch, die dir hier Probleme macht - da du dir anscheinend nicht im geringsten Gedanken darüber gemacht hast, aus welchem Wertebereich sie Zahlen liefert.

var Anzahlx = 11;     // Anzahl der Bilder  
  
var ZufallJetztx = new Date()  
var ZufallsZahlx = ZufallJetztx.getSeconds() % (Anzahlx);

% ist der Modulo-Operator, er liefert dir den "Rest" einer Ganzahl-Division, die "nicht aufgeht". ZufallsZahlx wird also hier, auf Grund von Anzahlx = 11, immer *kleiner* als 11 sein.

if (ZufallsZahlx==30) {  
TextFarbe = "#FFFFFF";  
GrafikUrl = "covers/games/000.jpg";  
UnterTitel="Punisher - War Zone"  
}

Diese und die folgenden Bedingungen, in denen der Vergleichswert bis zu 40 hoch geht, werden also nie erfüllt.

Und deshalb bekommen auch TextFarbe, GrafikUrl und UnterTitel nie neue Werte.
Wenn du beim Verändern der Variablennamen konsequent gewesen wärst, hätte dich dein Browser vielleicht mit einer Fehlermeldung darauf hinweisen können, dass diese Variablen gar nicht existieren. Aber so haben sie immer noch die Werte, die sie vorher bekommen haben.
Und deshalb geben auch beide Funktionen die gleichen Werte aus (und beide in richtig schön grauslichem HTML-Code).

Zugegeben, selbst wenn die Kombination aus Zufallsfunktion und If-Abfragen zusammenpassen würde, würdest du immer noch die gleichen Werte ausgegeben bekommen - weil du in games.js den Variablen erst mal Werte zuweist, dvds.js dann den gleichen Variablen noch mal neue Werte zuweisen würde - und erst viel später die Funktionen aufgerufen werden, die die aktuellen Werte dann ausgeben.

MfG ChrisB

--
Light travels faster than sound - that's why most people appear bright until you hear them speak.