Gabi: Arrays

Hallo zusammen!

Ich habe ein Problem und wäre euch dankbar, wenn ihr mir helfen könntet.

Ich möchte auf meiner Homepage eine Bildergalerie mit Javascript ermöglichen. Es funktioniert auch eigentlich soweit. Nur habe ich ein Problem mit den Arrays.

Ich möchte ein Array, dass von der HTML-Seite als Parameter einer Funktion übergeben wird in einer externen Javascript-Datei abspeichern, damit ich mit einer anderen Funktion diese Variable abrufen kann.

Ich hoffe es klingt nicht zu verwirrend. Wenn ihr möchtet schicke ich auf Wunsch auch den Code zu den ich hier erstellt hab.

Danke an alle die sich die Mühe machen und dies hier lesen.

Gruß

Gabi

  1. Halihallo Gabi

    Ich möchte auf meiner Homepage eine Bildergalerie mit Javascript ermöglichen. Es funktioniert auch eigentlich soweit. Nur habe ich ein Problem mit den Arrays.
    Ich möchte ein Array, dass von der HTML-Seite als Parameter einer Funktion übergeben wird in einer externen Javascript-Datei abspeichern, damit ich mit einer anderen Funktion diese Variable abrufen kann.

    Das ist leider nicht möglich. Mit JavaScript kann man keine Dateien schreiben, wie auch?
    JavaScript ist clientseitig, du würdest also Dateien auf dem Clientcomputer abspeichern
    und dies lässt JavaScript aus gutem Grund nicht zu. Eine Möglichkeit (die einfachste)
    wäre, wenn du mit Cookies arbeiten könntest. Eine schwieriger umsetzbare Lösung wäre,
    die Daten auf dem Server über eine Serverprogrammiersprache zu speichern.

    Viele Grüsse

    Philipp

  2. Halihallo Gabi

    Ich möchte ein Array, dass von der HTML-Seite als Parameter einer Funktion übergeben wird in einer externen Javascript-Datei abspeichern, damit ich mit einer anderen Funktion diese Variable abrufen kann.

    oder du arbeitest mit einer "Dateninsel". Speichere das Array an einem zentralen,
    staatischen Ort (z. B. Frame), worauf du immer zugreifen kannst. Mit JavaScript kannst du
    auf andere Frames zugreifen und kannst dort (z. B. über Formular) die Daten des Arrays
    "rekonstruieren".

    Viele Grüsse

    Philipp

    1. Hallo Phillip,

      danke vorerst für deine Hilfestellung.

      Das mit dem Frame klingt ziehmlich logisch. Ich wäre Dir dankbar, wenn du dies etwas genauer erklären könntest.

      Ich versuche mal die genaue Situation zu erklären:

      Ich habe eine externe Javascriptdatei XY.js in der sich eine Funktion befindet, auf die ich aus dem HTML-Bereich zugreife und diesem einen Array-Parameter übergebe.
      In dieser externen Javascript-Datei sind unterschiedliche Arrays jeweils mit einer Bildergalerie.
      Die Funktion auf die ich zugreife, muss nun den übergebenen Parameter als "SET-Methode" nun in einer Variable abspeichern, damit ich mit einer anderen Funktion das Array auslesen und somit in die galerie einbinden kann.
      Das dumme ist, dass wenn ich direkt, also ohne Parameter auf das Array zugreife ohne es irgendwo abzuspeichern, die Galerie problemlos funktioniert. Aber dann müsste ich für jedes Array seperat eine eigene Seite erstellen und es wäre für zukünftige Änderungen zu aufwändig.

      Ich hoffe dass ich dich nicht zu sehr verwirrt habe. Aber wenn das funktionieren würde, wäre ich Dir ausserordentlich dankbar.

      Gruß

      Gabi

      1. Halihallo Gabi

        Das mit dem Frame klingt ziehmlich logisch. Ich wäre Dir dankbar, wenn du dies etwas genauer erklären könntest.

        Vielleicht sollte ich dir erst sagen, was durch diese Lösung umsetzbar wäre:
        Im Frame hast du ein verstecktes Formular (bzw. der ganze Frame ist nicht sichtbar und
        die Daten werden dort einfach gespeichert, nennen wir ihn "versteckter Daten-Frame").
        In diesem Formular kannst du, wie in jedem anderen, Werte speichern und auslesen. Diese
        Werte sind skalarer Natur (also Zeichenfolgen oder Zahlen) und können von einem anderen
        Thread ausgelesen werden.

        [...]

        Ich hoffe dass ich dich nicht zu sehr verwirrt habe. Aber wenn das funktionieren würde, wäre ich Dir ausserordentlich dankbar.

        Nun, du hast mich verwirrt ;)
        Ich versuche mal das, was ich verstanden bzw. gefolgert habe niederzuschreiben.
        Korrigiere mich einfach, wo ich mir etwas falsches gedacht habe:

        Du hast eine externe .js Datei, welche die Daten, welche für das Generieren der Gallery
        von nöten sind speichert. Die Daten sind in Form von Arrays vorgegeben und werden über
        einen Parameter X (welchen du global speichern möchtest) "selektiert/angesprochen". Die
        Datei enthält des weiteren eine Funktion "generiereGallerie", welche die Gallery
        erstellt (ändern der Bilder oder dynamische Generierung des html - Quelltextes).
        Dann hast du eine andere html Seite, von der du diese Funktion aufrufst, mit dem
        Parameter X, um die entsprechenden Gallerie-Daten zu laden/selektieren; diesen Parameter
        X speicherst du im Datenframe, um ihn der Funktion "generiereGallerie" zugänglich zu
        machen.

        Aufgrund dieser Gedanken (falls sie richtig sind), will ich dir die Frage stellen, warum
        du diesen Parameter X nicht direkt der Funktion in der .js Datei übergibst?

        Nun ja, vorab kann ich dir schon mal den Lösungsansatz verraten, vielleicht hilft das ja
        schon:

        Du erstellst eine Seite mit einer Frameset-Definition. Der eine Frame enthält ein
        Formular, wo du die Daten (der Parameter X) aufnehmen kannst (der andere die
        Galerieseite). Also:

        <frameset cols="0,*">
           <frame src="daten.html" name="datenframe" />
           <frame src="galerie.html" name="galerie" />
        </frameset>

        daten.html enthält:
        <form name="datenformular">
           <input type="hidden" name="ParamX" />
        </form>

        Dann hast du die externe .js Datei, wo du nun diesen Parameter auslesen/schreiben
        kannst, über:

        parent.frames['datenframe'].document.forms['datenformular'].elements['ParamX'].value

        Viele Grüsse

        Philipp