0

私はこれが重複したトピックであることを知っていますが、私は非常に単純な例を使用しているため、このトピックは異なります。私はこのようなJavaScript関数を持っています:

(function myfunction($){
    function a(){
        alert("A section"); 
    }
    function b(){
        alert("B section")
    }
})();

関数Aと関数Bを呼び出すHTMLボタンを作成したいのですが、どうすればよいですか?

4

4 に答える 4

2

クロージャの外側で名前を宣言してグローバルにし、クロージャ内で割り当てます。

var a, b;
(function myfunction($){
    a = function() {
        alert("A section"); 
    }
    b = function() {
        alert("B section")
    }
})();

グローバル名前空間をオブジェクトでラップすることにより、グローバル名前空間の汚染を減らすことができます。

var myfuns = (function myfunction($) {
                 return { a: function() {alert("A section");},
                          b: function() {alert("B section");}
                        };
              })();

次に、とを呼び出しmyfuns.aますmyfuns.b

于 2013-03-13T15:11:51.633 に答える
1

これらの関数を持つオブジェクトを作成し、次のように関数を呼び出すことができます。

myFunctions = {

  a : function(){ alert("A section"); },
  b : function(){ alert("B section"); }

}

そして、以下のようにそれらを呼び出します:

myFunctions.a();
myFunctions.b();

これはそれをチェックするためのjsfiddleです。

アップデート:

コメントへの回答として、これはHTMLからどのように機能するかを示すために更新されたjsfiddleです。

于 2013-03-13T15:15:18.700 に答える
0

クロージャでグローバル変数に関数を割り当てるのは1つの方法です。それを行う他の方法は次のとおりです。

(function myfunction($){
    $("#button1").click(function {
        alert("A section"); 
    });
    $("#button2").click(function {
        alert("B section"); 
    });
})(jQuery);

これは、グローバルスコープを損なうものではありません。そして、ボタンのクリックイベントにバインドします。

jQueryを使用しない場合

(function myfunction($){
    var button1 = getElementById("idOfButton1");
    button1.onclick = function {
        alert("A section"); 
    };
    var button2 = getElementById("idOfButton2");
    button1.onclick = function {
        alert("B section"); 
    };
})();
于 2013-03-13T15:16:13.490 に答える
0

最初に変数を作成してから、それをグローバルコンテキストに公開できます。

(function myfunction($){
    var global = {
        a: function(){
            alert("A section");
        },
        b: function(){
            alert("B section")
        }
    };

    window.global = global;
})();
global.a();
global.b();
于 2013-03-13T15:22:00.313 に答える