Frage von TygaOne, 47

Kann mir jemand bei einem Problem mit Javascript helfen?

Hallo Zusammen,

Ich habe ein Javascript gefunden, das es auf meiner Webseite schneien lässt, im moment is die variable die das Ausgabesymbol definiert diese: var snowletter = "*" würde nun aber gerne Zeichen in zufälliger Reihenfolge ausgeben, so dass mal ein * kommt und ein anderes mal ein •, kann mir da jemand (weiter)helfen?

Lg
TygaOne

Antwort
von Sarkophator, 28

Es kommt drauf an, ob die Variable in der Funktion, die die einzelnen Zeichen erstellt, gesetzt wird oder global ist. Wenn sie global ist, müsstest du natürlich die Funktion entsprechend anpassen.

var snowletter = "*•"[Math.floor(Math.random())*2];

Die 2 steht hierbei für die Anzahl der Zeichen die du in dem String hast. 

Kommentar von TygaOne ,

Also ich bin ein Anfänger auf dem Gebiet...
Hier ist der link zu dem code: http://rainbow.arch.scriptmania.com/scripts/bg/snow_fall_1.html

Kommentar von Sarkophator ,

Ich habs dir mal hier angepasst: http://pastebin.com/8JheD8kN

Der ausschlaggebende Punkt ist der folgende Abschnitt:

for (i=0;i<=snowmax;i++) {
document.write("<span id='s"+i+"' style='position:absolute;top:-"+snowmaxsize+"'>"+snowletter+"</span>")
}

Hier werden die einzelnen Zeichen erstellt, entsprechend muss hier auch die Änderung mehr rein:

for(i = 0; i <= snowmax; i++)
document.write("<span id='s"+i+"' style='position:absolute;top:-"+snowmaxsize+"'>"+snowletter[randommaker(snowletter.length)]+"</span>")

Die im Script bereits vorhandene Funktion randommaker übernimmt genau den Teil mit Math.floor(Math.random()). Hier wird also im Grunde nur auf ein zufälliges Zeichen aus dem snowletter String zugegriffen.

Entsprechend musst du nur oben an der Stelle wo der snowletter String definiert wird, alle Zeichen angeben, die du erstellt haben möchtest:

var snowletter = "*•"

Der Rest an Änderungen aus dem Code aus dem Pastebin sind nur kleinere Anpassungen an modernerem Stil (HTML5, EventListener, ...) und Entfernung von veraltetem Code. (NetScape6 Support)

Kommentar von TygaOne ,

ich hätte noch eine letzte Frage, angangs konnte ich
var snowletter = "<img scr="bild.png">
 machen, kann ich das jetzt auch noch? also dass mehrere verschiedene bilder zufällig kommen?

Kommentar von Sarkophator ,

Wenn du die Bilder in einem Array setzt, dann geht das sogar komplett ohne dass du den Restcode verändern müsstest: (Die Zeichen könntest du nebenbei auch weiterhin dann benutzen)

var snowletter = ['<img src="bild.png">', '<img src="bild2.png">', '*', '•']

Allerdings würde ich dir raten, die Zeile mit der for-Schleife zur Erstellung der einzelnen Elemente zu verändern:

for(i = 0; i <= snowmax; i++)
document.write("<span id='s"+i+"' style='position: absolute;pointer-events: none;top:-"+snowmaxsize+"'>"+snowletter[randommaker(snowletter.length)]+"</span>")


Über pointer-events: none; werden die Bilder nicht mehr anklickbar, also kannst du durch die Bilder hindurchklicken.

Kommentar von TygaOne ,

Vielen vielen Dank

Keine passende Antwort gefunden?

Fragen Sie die Community