Eine Methode funktioniert eine ähnliche nicht

  • Hallo,

    ich stehe vor dem Problem, ein per JavaScript eingefügtes Bild zuerst größer werden zu lassen und anschließend wieser kleiner.

    Das vergrößern klappt auch, aber in der Methode die das Bild kleiner werden lässt, ist document.getElementById("this.ID"); null.

    Es geht um Die Methode lower() In der Klasse Box. (bigger() funktioniert)


    Mit freundlichen Grüßen


    Justus

  • Ich habe eine Lösung, aber keine Erklärung:

    Der Debugger zeigt, dass in schools.lower this das window-Objekt ist und nicht schools. Ändere ich die Zeile, indem ich eine anonyme Funktion verwende, die lower aufruft, funktioniert es:

    Code
            function renew_all() {
                schools.change();
                schools.bigger();
                window.setTimeout(function () { schools.lower() }, 2500);
                window.setTimeout(renew_all, 4000);
                //renew_all();
            }

    Vielleicht kann jemand mit tieferen Kenntnissen erklären, warum das so ist.

  • Bei weiterer Überlegung bin ich der Erklärung näher gekommen: Übergibt man eine Funktionsreferenz, so ist dies nur die Referenz der betr. Funktion, ohne Informationen über den Kontext. Aus der Notation window.setTimeout(schools.lower, 2500); ist zwar ersichtlich, dass lower eine Funktion von schools ist, aber in der Referenz, die an setTimeout übergeben wird, ist diese Info nicht enthalten.

Jetzt mitmachen!

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