2017-03-16 6 views
0

Ich habe das Gefühl, dass ich hier einen wirklich einfachen Fehler mache. Im Grunde versuche ich nur, auf eine Funktion von einer anderen Funktion innerhalb einer selbstausführenden Funktion zuzugreifen. Gibt es einen Grund, warum printConfirmation nicht angerufen wird? Es scheint, dass eventHandlers nicht richtig funktioniert.Zugriff auf Nebenfunktionen innerhalb einer selbstausführenden Funktion

(function(){ 

    var targetZone = document.getElementById('target-zone'); 

    var eventHandlers = function(){ 
    targetZone.addEventListener('click', printConfirmation); 
    }; 

    var printConfirmation = function(){ 
    targetZone = targetZone.classList; 
    targetZone.add('clicked'); 
    }; 

})(); 
+1

rufen Sie nicht 'eventHandlers' an. –

Antwort

1

Es ist ein Hebe Problem, wechseln Sie in Funktionsdeklarationen anstelle von Funktionsausdrücken und es wird funktionieren:

(function(){ 

    var targetZone = document.getElementById('target-zone'); 

    function eventHandlers(){ 
    targetZone.addEventListener('click', printConfirmation); 
    } 

    function printConfirmation(){ 
    targetZone = targetZone.classList; 
    targetZone.add('clicked'); 
    } 

    eventHandlers(); 
})(); 

Edit: Auch als Daniel wies darauf hin, Sie brauchen eigentlich eventHandlers()

nennen
+0

Danke dafür. Ist es immer noch ein Problem, wenn ich 'eventHandlers' als @ daniel-a-white aufspreche und es ausführt? – Modermo

+0

Funktionsausdrücke werden nicht auf die gleiche Weise wie Funktionsdeklarationen aktiviert. Es kann einige Browser geben, die dies erlauben, aber im Allgemeinen sollten Sie nur Funktionsausdrücke aufrufen, nachdem sie definiert wurden. –

+1

Da Sie 'eventHandlers()' am Ende dieses selbstausführenden Funktionsumfangs aufrufen, sollte es genauso gut funktionieren, ohne Funktionsausdrücke in Deklarationen umzuwandeln, richtig? –

Verwandte Themen