2017-03-16 17 views
0

私はここで本当に単純なエラーを作り出しているように感じます。基本的に、私は自己実行機能内の別の関数から関数にアクセスしようとしています。 printConfirmationが呼び出されていない理由はありますか? eventHandlersも正しく動作していないようです。自己実行関数内の兄弟関数へのアクセス

(function(){ 

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

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

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

})(); 
+1

あなたは 'eventHandlers'を呼び出していません。 –

答えて

1

それは、巻上の問題ではなく、関数式の関数宣言の変更であり、それは動作します:

(function(){ 

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

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

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

    eventHandlers(); 
})(); 

は編集:ダニエルが指摘したようにまた、あなたが実際にeventHandlers()

を呼び出す必要があります
+0

ありがとう。 @daniel-a-whiteが指摘しているように 'eventHandlers'を呼び出して実行すると、まだまだ問題はありますか? – Modermo

+0

関数式は関数宣言と同じようにホイストしません。それを可能にするブラウザがいくつかあるかもしれませんが、一般的に言えば、定義された関数式だけを呼び出す必要があります。 –

+1

自己実行関数スコープの最後に 'eventHandlers()'を呼び出すので、関数式を宣言に変換することなく、同じようにうまく動作するでしょう。 –

関連する問題