Mensch! Jetzt funktioniert alles tadellos!
Vielen, vielen Dank, Rolf! Du hast mir sehr geholfen.
Wenn Du die Sache mit der Closure nicht verstanden hast - keine Panik, das haben viele nicht. Es ist aber eine essenzielle Eigenschaft von Javascript - oder allgemein von funktionalen Programmierkonzepten, und eigentlich gar nicht schwer. Wenn Du Dir meine Haupt-Funktion anschaust: Die definiert Variablen pageNumber und $pages, sowie eine Funktion changePage. Innerhalb von changePage wird auf pageNumber und $pages zugegriffen. Dann wird changePage als Event-Handler registriert und DANN ENDET DER READY-HANDLER. In einer Programmiersprache ohne Closures wäre jetzt der Teufel los, weil es die Variablen nicht mehr gibt. Entweder gäbe es eine Fehlermeldung, oder das Programm würde bösartig in verlassenem und möglicherweise anderweit belegtem Speicher herumstochern. JavaScript ist anders. JavaScript bemerkt den Zugriff auf die Variable aus ihrer Umgebung, legt da ein Körbchen drumherum (die Closure) und hängt das Körbchen an die changePage Funktion. Auf diese Weise kann changePage mit Variablen eines längst verlassenen Aufruf-Kontextes weiterarbeiten und braucht keinerlei globale Variablen.
Ah, ja okay, so etwas in der Art hatte ich mir schon gedacht. Danke, dass du es nochmal erklärt hast! 👍
Das Klick-Event habe ich noch ergänzt mit dem Code von 1unitedpower, damit auch die Seitenzählung unten funktioniert.
$("#next_page").click(function() {
changePage(pageNumber+1);
document.querySelector('#pageNumber').textContent = pageNumber;
});
$("#previous_page").click(function() {
changePage(pageNumber-1);
document.querySelector('#pageNumber').textContent = pageNumber;
});
Problem gelöst! Auf zum nächsten! Vielen Dank für die Mühe! 🌝