Ergebnis 1 bis 20 von 20

Thema: getElementById - für alle elemente

  1. #1
    Contao-Fan
    Registriert seit
    22.12.2012.
    Beiträge
    325

    Standard getElementById - für alle elemente

    Tag Leute,

    ich habe dieses Script eingebunden, mein Problem ist das es nur auf das Element angewendet wird. Wie muss ich das umschreiben das es auf alle Elemente mit der ID image_list geht?

    HTML-Code:
    <script>
      window.onload = function() {
        var wall = new Masonry( document.getElementById('image_list') );
      };
    </script>
    http://miedl.n-lind.de/

  2. #2
    Contao-Fan
    Registriert seit
    22.12.2012.
    Beiträge
    325

    Standard

    up..........

  3. #3
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.614
    Partner-ID
    1081
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo Slind,

    nach den aktuellen HTML-Standards, darf eine ID immer nur einmal auf einer Seite stehen. Die ID muss damit eindeutig sein. Daher ist es kein Wunder, dass Javascript nach der ersten Fundstelle aufhört. Siehe auch Fehlermeldungen im HTML-Validator.
    Wenn Du mehrere Elemente mit der gleichen Kennzeichnung versehen möchtest, kannst Du das mit CSS-Klassen machen, die dürfen mehrfach auf einer Seite verwendet werden. Nur der JavaScript-Befehl getElementById bringt Dich dann natürlich nicht an's Ziel.

  4. #4
    Contao-Fan
    Registriert seit
    22.12.2012.
    Beiträge
    325

    Standard

    wie war nochmal der für klassen?

    mhh, die ids kommen aber direkt von contao, hab da keine angegeben, wie kann oder soll ich das überhaupt beheben?

  5. #5
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.614
    Partner-ID
    1081
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Na direkt von Contao kommt der Slider nicht, es ist eine Erweiterung!

    Man kann den Fehler beim Autor melden oder versuchen, über die Templates den HTML-Code zu korrigieren. Ich kenne diese Slider-Erweiterung nicht, daher kann ich leider keine gezielteren Tipps geben.

  6. #6
    Contao-Urgestein
    Registriert seit
    29.10.2009.
    Ort
    Magdeburg
    Beiträge
    2.020
    Partner-ID
    626
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Slind Beitrag anzeigen
    wie war nochmal der für klassen?
    Google fragen: mootools javascript selektor für klassen

  7. #7
    Contao-Fan
    Registriert seit
    22.12.2012.
    Beiträge
    325

    Standard

    ich sprech doch nicht vom slider, vorallem geht es hier ja auch gar nicht um den.

    Ich meine die Image List die direkt von Contao kommt und wo ich keine Änderungen vorgenommen habe
    Code:
     Line 177, Column 20: Duplicate ID image_list.
    <ul id="image_list">

  8. #8
    Contao-Nutzer
    Registriert seit
    03.03.2011.
    Beiträge
    177

    Standard

    Irgendwo mußt du doch die Zuweisung von zum Beispiel

    HTML-Code:
    <ul id="image_list" style="position: relative; height: 191px;" class="masonry">
    gemacht haben. Ich nehme mal an das ce_gallery.html5 - Template bearbeitet.

  9. #9
    Contao-Fan
    Registriert seit
    22.12.2012.
    Beiträge
    325

    Standard

    das ist bei mir im backend nicht vorhanden, naja habe es jetzt hinzugefügt und geändert.

    nur funktioniert das nicht:

    HTML-Code:
    <script>
      window.onload = function() {
        var wall = new Masonry( $(".image_list") );
      };
    </script>
    was mach ich da falsch?
    Geändert von Slind (22.02.2013 um 21:35 Uhr)

  10. #10
    Contao-Nutzer
    Registriert seit
    16.09.2009.
    Beiträge
    57
    Partner-ID
    7622

    Standard

    Hast du denn Mootools bzw. Jquery aktiviert? Denn von alleine kann JavaScript den Code eher nicht...

    Auch interessant hierfür: http://heise.de/-1808306

  11. #11
    Contao-Fan
    Registriert seit
    22.12.2012.
    Beiträge
    325

    Standard

    jquery ist an


    HTML-Code:
    <script>
      window.onload = function() {
        var wall = new Masonry( document.getElementsByTagName("image_list") );
      };
    </script>
    das funktioniert auch nicht
    Geändert von Slind (22.02.2013 um 22:06 Uhr)

  12. #12
    Contao-Fan Avatar von webster
    Registriert seit
    14.09.2010.
    Ort
    Kiel
    Beiträge
    460

    Standard

    Die Frage ist ja: Was erwartet der Konstruktor von Masonry als Parameter?

    Ein DOM-Element (getElementById)?
    Ein Array aus DOM-Elementen (getElementsByClassName)?
    Ein jQuery-Objekt ($('#image_list'))?
    Oder gar ein Array aus jQuery-Objekten ($('.image_list'))?

    Um was für ein Skript handelt es sich denn? Ist es das hier: http://masonry.desandro.com/index.html ?
    Was ist das? - Blaues Licht - Und was macht es? - Es leuchtet blau...

  13. #13
    Contao-Fan
    Registriert seit
    22.12.2012.
    Beiträge
    325

    Standard

    Zitat Zitat von webster Beitrag anzeigen
    Die Frage ist ja: Was erwartet der Konstruktor von Masonry als Parameter?

    Ein DOM-Element (getElementById)?
    Ein Array aus DOM-Elementen (getElementsByClassName)?
    Ein jQuery-Objekt ($('#image_list'))?
    Oder gar ein Array aus jQuery-Objekten ($('.image_list'))?

    Um was für ein Skript handelt es sich denn? Ist es das hier: http://masonry.desandro.com/index.html ?

    achso, die vanilla variante: http://vanilla-masonry.desandro.com/

  14. #14
    Contao-Nutzer
    Registriert seit
    14.03.2012.
    Ort
    Berlin
    Beiträge
    225

    Standard

    So gehts:

    HTML-Code:
    <script>
    $(function() {
           $( ".image_list" ).each(function() {
            var wall = new Masonry( $(this)[0] );
        });
    });
    </script>
    Siehe: http://jsfiddle.net/2NPCt/

  15. #15
    Contao-Fan
    Registriert seit
    22.12.2012.
    Beiträge
    325

    Standard

    Zitat Zitat von jk1 Beitrag anzeigen
    So gehts:

    HTML-Code:
    <script>
    $(function() {
           $( ".image_list" ).each(function() {
            var wall = new Masonry( $(this)[0] );
        });
    });
    </script>
    Siehe: http://jsfiddle.net/2NPCt/

    funktioniert leider nicht, denn jetzt sind alle Bilder nur noch 24px hoch.

  16. #16
    Contao-Fan Avatar von webster
    Registriert seit
    14.09.2010.
    Ort
    Kiel
    Beiträge
    460

    Standard

    Probiers mal ohne $ und Arraykey im Konstruktor:

    HTML-Code:
    <script>
    $(function() {
           $( ".image_list" ).each(function() {
            var wall = new Masonry( this );
        });
    });
    </script>
    Was ist das? - Blaues Licht - Und was macht es? - Es leuchtet blau...

  17. #17
    Contao-Fan
    Registriert seit
    22.12.2012.
    Beiträge
    325

    Standard

    es geht, allerdings sind die Bilder beim ersten aufrufen immer noch nur 24px hoch, wie kann ich das beheben?
    http://miedl.n-lind.de/
    Geändert von Slind (24.02.2013 um 18:19 Uhr)

  18. #18
    Contao-Fan
    Registriert seit
    22.12.2012.
    Beiträge
    325

    Standard

    bzw. wieso ist das so wenn man es über ne Klasse statt über ne ID anspricht?

  19. #19
    Contao-Fan
    Registriert seit
    08.11.2011.
    Ort
    Frankfurt am Main
    Beiträge
    768
    User beschenken
    Wunschliste

    Standard

    vermutlich betrachtest du dir die Seite mit einem Webkit-Browser. Im FF sind die Bilder "richtig" hoch. Die Problematik ist, daß Webkit-Browser beim Laden der Seite als Elementhöhen falsche Werte liefern. Das ist ein grundsätzliches Problem. Lösen kannst du es teilweise, wenn du das Script erst bei
    PHP-Code:
    $(window).load(function() { } 
    triggern läßt. Zu diesem Zeitpunkt sind auch alle Bilder geladen und es wird die korrekte Größe geliefert. Bei
    PHP-Code:
    $(document).ready(function() { } 
    ist nur der DOM aufgebaut und die Bilder noch nicht geladen. Warum Webkit-Browser sich weigern die im img-Tag hinterlegten Größen-Angaben zu nutzen weiß wohl niemand. Jedenfalls gäbe es keinen Grund es nicht zu tun... ;(

  20. #20
    Contao-Fan
    Registriert seit
    22.12.2012.
    Beiträge
    325

    Standard

    Zitat Zitat von Dirch Beitrag anzeigen
    vermutlich betrachtest du dir die Seite mit einem Webkit-Browser. Im FF sind die Bilder "richtig" hoch. Die Problematik ist, daß Webkit-Browser beim Laden der Seite als Elementhöhen falsche Werte liefern. Das ist ein grundsätzliches Problem. Lösen kannst du es teilweise, wenn du das Script erst bei
    PHP-Code:
    $(window).load(function() { } 
    triggern läßt. Zu diesem Zeitpunkt sind auch alle Bilder geladen und es wird die korrekte Größe geliefert. Bei
    PHP-Code:
    $(document).ready(function() { } 
    ist nur der DOM aufgebaut und die Bilder noch nicht geladen. Warum Webkit-Browser sich weigern die im img-Tag hinterlegten Größen-Angaben zu nutzen weiß wohl niemand. Jedenfalls gäbe es keinen Grund es nicht zu tun... ;(
    cool, vielen Dank

    so wie es aussieht muss ich javascript/jquery noch mal lernen, könnt ihr mir da was bestimmtes empfehlen.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •