2017-01-13 20 views
1

ボタンクリックイベントで関数を呼び出したい。この関数は別のjsファイルで定義されており、function.phpファイルにenqueueというファイルがあります。ファイルがenqueueから読み込まれているのがわかります。しかし、そのボタンをクリックするとエラーが発生するボタンクリック時の呼び出し機能が動作しない

errorReferenceError: myFunction is not defined

私はthis linkを参照してください。より詳細な説明については、

<button onclick="jQuery(document).ready(function($) {myFunction();});" class="dropbtn"><i class="fa fa-bars fa-lg" aria-hidden="true"></i></button> 

custom.js

(function($) { 

    function myFunction() { 

     document.getElementById('myDropdown').classList.toggle('show'); 

    } 

    window.onclick = function(event) { 

     if (!event.target.matches('.dropbtn')) { 

     var dropdowns = document.getElementsByClassName('dropdown-content'); 
     var i; 

      for (i = 0; i < dropdowns.length; i++) { 

       var openDropdown = dropdowns[i]; 

       if (openDropdown.classList.contains('show')) { 

        openDropdown.classList.remove('show'); 

       } 

      } 

     } 

    } 

})(jQuery); 
+0

外部から 'myFunction'を' $(function(){}) 'と書くだけです。あなたのアンカーアトリビュートは 'onclick = return myFunction();でなければなりません – Vineet

答えて

0

問題は、関数のスコープにあるをクリックすると、そのボタンのドロップダウンメニューを表示します。これを解決するには、jsファイル内の関数を呼び出すことを試みます。たとえば:

$(document).ready(function(){ 
    function myFunction(){ 
    ... 
    } 

    $(".dropbtn").click(myFunction()); 
}); 
+0

同じ問題が表示されます –

+0

同じjQuery関数の中に関数と呼び出しの両方を置いてもよろしいですか? – Manikiran

+0

http://stackoverflow.com/questions/5067887/function-is-not-defined-uncaught-referenceerrorや他の同様の質問を参照してください。簡単に修正できますが、キーを知るだけで済みます。 – Manikiran

0

$(document).ready(function(){ 
    function myFunction(){ 
     alert ('Say something!'); 
    } 

    $(".dropbtn").click(function(){ 
     myFunction(); 
    }); 
}); 
0
私はあなたがボタンの onclick属性に ready機能を使用する必要がないことに気づい

を動作するはずですので、これで十分です:

<button onclick="myFunction();" class="dropbtn"> 
    <i class="fa fa-bars fa-lg" aria-hidden="true"></i> 
</button> 

しかし、これを行う代わりに、そのonclick属性をボタンから削除できます(インラインスクリプトを避けること、コードmaintainab ilityとセキュリティ上の理由)とManikiranがあなたを示唆した解決策を試してみたが、一つの小さな違いが、あなたはmyFunctionを定義するが、custom.jsにそれを実行しない:

jQuery(function(){ 
    function myFunction(){ 
    jQuery('#myDropdown').toggle('show'); //this is the jQuery way 
    } 

    // remaining code of your custom.js 

    jQuery(".dropbtn").click(myFunction); // binds the click event to 
             // all the buttons with the dropbtn class 
}); 

私はあなたが$を使用していない気づきました一部の部分は、すべてjQueryキーワードで置き換えることができます。

関連する問題