Adventskalender

  • Hallo an alle!


    Ich bin gerade dabei mir einen Adventskalender zu basteln. Allerdings komme ich da gerade nicht weiter und erhoffe mir ein wenig Hilfe.

    In Sachen Javascript stehe ich noch so ziemlich am Anfang..X/


    Zu meinem Projekt:

    Ich habe mir mit Photoshop meine beiden Bilder in 24 Teile zerschnitten. Nun wollte ich das man per Mausklick das Bild ändert.

    Das hab ich soweit erstmal hinbekommen. Nun soll das aber auch nur an den bestimmten Tagen funktionieren. Und wenn man am nächsten Tag die Seite aufruft, dann sollen die bereits angeklickten Bilder sichtbar bleiben..

    Ich habe jetzt schon drei unterschiedliche Varianten ausprobiert, komme aber zu keinem Erfolg ;(



    Habe dann versucht den Quellcode einzubinden..

    Code
    heute = new Date();
        Tag = heute.getDate();
        Monat = heute.getMonth() + 1;
        if (Monat == 11 && Tag >= 1)

    ..und nun klemmt die Säge. Es soll halt nur das Bild geändert werden und keine neue Seite geöffnet werden.

    Außer an einem falschen Datum, da soll ein Popup aufgehen..

  • *smile* oh ja, jetzt kommt wieder die Zeit der Adventskalender ...


    Mit dem Date-Objekt warst Du schon auf dem richtigen Weg. Was für den Vergleich noch fehlt, ist die Nummer des Tages für das Bild. Die habe ich mal durch Javascript hinzu gefügt, damit man es nicht von Hand editieren muss. Dies sollte funktionieren:

    Zitat

    Und wenn man am nächsten Tag die Seite aufruft, dann sollen die bereits angeklickten Bilder sichtbar bleiben..

    Das kannst Du erreichen, indem Du im Local-Storage speicherst, wenn ein Türchen geöffnet wurde.

  • Erstmal vielen Dank für deine Hilfe! Ich habe mich jetzt die letzten Tage damit beschäftigt und es auch einigermaßen hinbekommen...zumindest zum Teil.

    Ich kann jetzt alle Fenster öffnen und beim falschen Datum kommt ein Popup mit einer "Fehlermeldung". Zwei Problemchen habe ich allerdings noch..

    Das mit dem Local-Storage bekomm ich einfach nicht hin bzw ist für meine Anfängerkenntnisse noch viel zu hoch. Ich hatte auch schon paar Schwierigkeiten mich durch dein Script zu kämpfen. Ich kann momentan auch nur die Bilder von oben links nach unten rechts öffnen, möchte das aber unterschiedlich verteilt machen. Ich denke auch mal, dass es mit dem data-Attribut zusammenhängt. Ich habe es auch schon versucht irgendwie mit einzufügen, aber sicherlich mache ich da noch was falsch.. siehe (...img src="/Adventskalender/img/fst_px/px01_21.gif" data-day="3" name="image" onclick="swi...)


  • Kein Problem, die Tage zufällig verteilt anzulegen. Aber müsste man dann nicht auch die Bilder anders verteilen?

    "/Adventskalender/img/fst_px/px01_01.gif" ist doch explizit für den 1. Dezember, usw., nicht wahr?

  • Die Imagemap wurde so von Photoshop ausgegeben. Ich kann die Bilder auch anders anordnen, aber dann kann ich trotzdem nur von oben links anfangen, die Bilder zu öffnen..


    Habe ich das mit dem data-Attribut so richtig verstanden, oder bin ich da völlig auf dem Holzweg?

  • Das data-Attribut legt fest, zu welchen Tag das Bild gehört, also bei data-day="14" würde das Bild zum 14. Dezember gehören. Wenn ich diese Zahl jetzt dem ersten Bild zuordne, passt es doch nicht, denn das Bild "/Adventskalender/img/fst_px/px01_1.gif" gehört doch zum 1. Dezember oder nicht? Oder ist das egal? Ich weiß ja nicht, wie die Bilder aussehen.

  • Die Zuordnung der Bildnamen spielt keine Rolle. Ich hab mir zwei Bilder genommen und diese per Slice-Tool in Photoshop in 24 kleine Bilder geschnitten. Die Reihenfolge kann ich in Photoshop schonmal nicht ändern. Es beginnt immer oben links mit der 1 bis zur 24 unten rechts. Ich hatte gedacht, dass ich die Bilder nun mit dem data-Attribut durcheinander zurodnen kann. Aber irgendwie klappt das nicht bzw mache ich sicherlich was falsch dabei.

    So sieht mein Quelltext momentan aus..


    Oder muss ich das data-Attribut in der Javasript Funktion zuordnen?

  • Du hast nicht wirklich einen Fehler gemacht, aber das Javascript macht dir einen Strich durch die Rechnung, denn es nummeriert hiermit die Tage neu:

    Code
            for (var i = 0; i < images.length; i++) {
                images[i].setAttribute("data-day", i + 1); // Nummer des Tages als data-Attribut hinzu fuegen
                images[i].src = "http://lorempixel.com/output/nature-q-c-160-160-5.jpg"; // nur zum Test
            }

    Wenn Du das löschst, bleiben deine Einträge erhalten.

  • Hängt das mit deinem früheren Wunsch zusammen, die Bilder, die angeklickt wurden, bei einem späteren Aufruf der Seite gleich zu öffnen?

    Ich empfehle, die URL des zweiten Bildes ebenfalls in einem data-Attribut zu speichern und in swichImage darauf zuzugreifen:

    Code
    <img src="/Adventskalender/img/fst_px/px01_01.gif" data-day="7"
     data-img="/Adventskalender/img/scd_px/px02_01.gif" name="image" onclick="switchImage(this)">

    Dann kannst Du für einen bestimmten Tag das Bild folgender Maßen öffnen:

    Code
    switchImage(document.querySelector("img[data-day='7']");

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!