Beiträge von Sempervivum

    Das Kernproblem, warum dein Layout nicht so funktioniert, wie es soll, ist, dass Du dieses

    Code
    <div class="all">

    drin hast. Diesem hättest Du display:flex geben müssen.
    Außerdem fehlt der Doctype.

    Code
    <div class="body">

    ist etwas verwirrend. Ich empfehle, statt dessen das main-Tag zu verwenden, das semantisch dafür vorgesehen ist.

    Dann würde das HTML so aussehen:

    und das CSS so:

    und das Layout müsste das sein, was Du dir vorstellst:

    Header oben, Footer unten und der grau hinterlegte Inhalt füllt den Raum dazwischen aus.

    • Wie oben schon geschrieben, ist calc für alle Maßeinheiten möglich, d. h. auch für die Höhe.
    • Wenn Du Flexlayout verwendest, wie in dem Beispiel bei Stackoverflow, brauchst Du kein calc, weil der Browser automatisch die richtige Höhe berechnet.

    Das erledigt man besser mit Flexlayout, damit sich die Höhe des Content-Bereiches automatisch anpasst, so dass er den verfügbaren Platz zwischen Header und Footer genau ausfüllt. Es ist immer ungünstig, mit festen Abmessungen zu arbeiten, weil man dann die Berechnungen jedes Mal anpassen muss, wenn sich an der Höhe des Header oder des Footer etwas ändert.

    Wenn ich dich richtig verstanden habe, sollte das mit zwei Funktionen möglich sein:

    Code
    function func1() {
        // Hier der Code, der "vorher schon geschrieben sein soll"
    }
    
    function func2() {
        // dies ist die Funktion, die laufen soll, damit func1() aufgerufen wird
        // einfach func1 aufrufen
        func1();
        // weitere Aktionen in func2
    }

    Zu einfach? Wenn es nicht das ist, was Du meinst, beschreibe es genauer.

    Das Programmieren an sich erlernen kannst Du auch mit den Syntax einer Bibliothek. Vor 30, 40 Jahren meinten die Leute, man könne nur "richtig" Programmieren lernen, wenn man eine Assemblersprache erlernt und Hochsprachen wie Pascal oder C erst Mal außen vor lässt. Und wer redet heute noch von Assembler ...?

    Du verwendest ja Bootstrap und das macht es schon mit Javascript.
    Ich habe das Ganze mal auf das Wesentliche reduziert und ein Demo gemacht, dort kannst Du ablesen, wie die Übergabe über ein data-Attribut funktioniert:

    Wenn Du es mit PHP machen möchtest, so ist das auch möglich, indem Du für jede Nachricht ein eigenes Modal definierst und über dessen ID und data-target jeweils das richtige öffnest, so wie ich es ebenfalls in dem vorigen Thread beschrieben hatte.

    Der Sachverhalt ist noch der gleiche wie in dem vorigen Thread: Da das Modal durch Javascript geöffnet wird, kann die Übergabe der Daten auch nur durch Javascript erfolgen, jedenfalls wenn Du nur ein Modal für alle Texte haben willst. Die Lösung auf PHP-Seite zu suchen, führt nicht zum Ziel, wie man an der ergebnislosen Diskussion dort sieht. Und die Lösung ist ebenfalls die selbe, die ich schon in dem vorigen Thread gepostet habe:

    https://getbootstrap.com/docs/3.3/javascript/

    Offenbar unterstützt der IE 11 die kurze Notation für das forEach nicht:

    Code
    data.items.forEach(item => {

    Verwendet man die althergebrachte funktioniert es:

    Code
    data.items.forEach(function(item) {

    html-seminar.de/woltlab/attachment/1636/

    Ein guter Editor und sinnvolles Einrücken bringen es an den Tag:

    Da wo das beanstandete Semikolon steht muss ein Komma hin.

    Weil dein Code nicht eingerückt war, habe ich mich offenbar getäuscht: Die weitere Bearbeitung steht offenbar doch im success-Callback.

    Jetzt musst Du die Definiton von gItem vor das forEach schieben:

    Code
                    console.log(data);
                    var gItem = '';
                    data.items.forEach(item => {
                        console.log(item.title, item.link, item.enclosure.link);
                                    
                          var itemTitle = item.title.text;
                          var itemLink = item.link;
                          var itemImage = item.enclosure.link;

    Zwei Probleme sehe ich auf Anhieb:

    1. Die Variable gItem ist lokal innerhalb der forEach-Schleife definiert. Daher ist sie außerhalb der Schleife nicht sichtbar und ein Zugriff würde einen "undefined"-Fehler liefern.
    2. Selbst wenn Du die Variable gItem global definieren würdest, würde es nicht funktionieren, weil Ajax asynchron arbeitet: Die Anfrage wird an den Server gesendet, etwas später trifft die Antwort mit den Daten ein. Greifst Du jetzt auf das Ergebnis direkt im Anschluss an den Ajax-Aufruf zu, so ist die Antwort vom Server noch nicht da und die Inhalte in der Variablen nicht vorbesetzt.

    Lösung: Alles was die Variable gItem mit Inhalt benötigt, ebenfalls im success-Callback erledigen. Wenn dir der Code dann zu unübersichtlich wird, kannst Du die Aktionen in eine Funktion schreiben und diese als Callback-Funktion übergeben.

    Dies:

    Code
    var itemTitle = $(this).find('title').text();

    ist bei einem Objekt viel einfacher:

    Code
    var itemTitle = item.title;

    Vorausgesetzt, Du benutzt die forEach-Schleife wie in meinem vorigen Posting.

    Auf die Weise kannst Du auf alle Bestandteile des Feed zugreifen und dein HTML generieren.

    Wenn Du als dataType json angibst, dekodiert jQuery das JSON und übergibt ein Objekt an den success-Callback, aus dem Du die Bestandteile ganz leicht auslesen kannst:

    Code
                success: function (data) {
                    console.log(data);
                    data.items.forEach(item => {
                        console.log(item.title, item.link, item.content, item.description);
                    });
                }
    Zitat

    1 Modal für alle User.

    Deswegen habe ich dem Button auch die Value mit der UserID mitgegeben

    Da es nur ein Modal ist, habe ich wohl etwas grundsätzlich missverstanden. Dann muss natürlich der Wert des data-target immer gleich mit der ID des Modals sein.
    Allerdings verstehe ich nicht, wie über das value-Attribut der Inhalt des Modals dynamisch geändert werden soll? Ich würde eher empfehlen, das Verfahren einzusetzen, das hier beschrieben wird:
    https://getbootstrap.com/docs/3.3/javascript/