Frage von Asase, 22

"Money Bag" mit Javascript schreiben?

Hallo meine Lieben,

ich entwickle gerade (seit fünf Monaten und steigend ;)) eine Website und hatte jetzt vor diese mit Minigames und einem Art "Banksystem" zu erweitern.

Da ich ein absoluter Leihe bin und gerade erst begonnen habe mit HTML, CSS, Javascript, etc. fällt es mir gerade sehr schwer eine Lösung zu finden.

Erklärung:

Der User hat quasi ein "Geldbeutel" welches sich nach dem Klicken auf das Symbol öffnet (Dropdownmenü) und ihm drei Geldwährungen anzeigt. Ich möchte jetzt, das wenn er Geld bekommt, dieses zum Geldbeutel hinzugerechnet und gespeichert wird.

Jemand eine Idee für einen Code?

Ich bin mir zwar ziemlich sicher das mein Ansatz komplett daneben ist, ich zeige ihn euch trotzdem (Bild angefügt).

Im vorraus Danke für eure Hilfe.

Liebe Grüße Asase

Antwort
von regex9, 1

Jemand eine Idee für einen Code?

Nein, erst kommt die Anforderungsanalyse und das Konzept.

Da du nicht genau definierst, wie lange die Daten gespeichert werden sollen, gibt es verschiedene Möglichkeiten einer Lösung.

a) Die Daten werden nur innerhalb dieses Requests gepeichert.

Dann speichere den Wert in einer global verfügbaren Variable oder reiche den Wert von Funktion zu Funktion weiter. Ebenso wäre es möglich, den Wert in das DOM einzufügen und bei Bedarf wieder herauszulesen.

b) Die Daten werden nur so lange gespeichert, wie sich der Nutzer auf der Seite befindet.

Dann nutze Cookies, Session Storage oder hänge den Wert an die URL. Letzteres birgt das Risiko, dass der Wert von außen veränderlich ist.

c) Die Daten werden dauerhaft gespeichert.

Nutze Cookies.

Ich bin mir zwar ziemlich sicher das mein Ansatz komplett daneben ist, ich zeige ihn euch trotzdem (Bild angefügt).

Einmal vom Ansatz völlig abgesehen, weißt du wohl nicht, was du da tust. Denn einmal davon abgesehen, dass ich kein Element mit der Id "Münzen/..." entdecke, versuchst du die gefundenen Elemente auch noch zusammenzurechnen. 

Die Funktion getElementById gibt dir entweder ein HTMLElement zurück, welches die übergebene Id besitzt, oder den Wert null. Eine Addition mit null funktioniert nicht, ebenso kannst du keine Objekte addieren. Es wäre so, als würdest du zwei Häuser addieren wollen.

Also:

  1. Brauchst du ein Element mit einer Id
  2. Muss die Id einmalig vorkommen und sollte keine Sonderzeichen beinhalten
  3. Musst du wenn, den Wert aus dem Element herauslesen.
<input id="money" type="text" />
<script>
  var money = document.getElementById("money").value; </script>
Kommentar von Asase ,

Ersteinmal vielen Dank für deine schnelle Antwort. :)

Mir ist bewusst das ich "nicht weiß was ich tue", da ich wie bereits oben erwähnt noch ein Leihe bin und mir mein Wissen gerade selbst erarbeite bzw. per Foren und per Versuche erlerne. 

Ich danke dir auf jeden fall für deine Erklärung - Da ich jetzt einen Ansatz habe nach dem ich Suchen muss. 

Auf die Frage des speicherns - und zwar möchte ich das das Geld Seitenübergreifend gespeichert wird. Da man als User über verschiedene Weg Geld bekommen kann und somit muss sich dein Geldbeutel merken wann und wo er etwas dazu bekommen hat oder abgezogen wurde und wie viel im Inne wohnt.

Kommentar von regex9 ,
  1. Nutze Bücher und die Dokumentation von MDN (https://developer.mozilla.org/de/docs/Web/JavaScript) als Referenzen, um JavaScript zu lernen.
  2. Somit musst du die Option c als Lösungsweg heranziehen. Oder du löst die Serialisierung serverseitig.
Antwort
von surbahar53, 5

Das kommt darauf an, wie der Geldbeutel verwaltet werden soll.

Ist er nur während einer Session gültig oder soll er über das Schliessen und Öffnen Deiner Webseite erhalten bleiben ?

Im ersten Fall kann man dazu Javascript verwenden. Suche dazu nach „Javascript SessionStorage“. Nicht verwechseln mit SESSION Variablen,
denn die sind auf dem Server beheimatet.

Im zweiten Fall muss der Code auf dem Server mit PHP und SQL-Datenbanken entwickelt werden.

Kommentar von Asase ,

Vielen Dank für deine schnelle Antwort. Jetzt weiß ich wo und nach was ich schauen muss um eine Lösung zu finden. :) 

Keine passende Antwort gefunden?

Fragen Sie die Community