0

私はこのJavaScript関数を持っています:

 function files() {
    var dropResult = false;

    $('#button1').on('click', function() {
           dropResult = true;
    });

    $('#button2').on('click', function() {
          dropResult = false;
    });

   return dropResult;           
}
files();

いずれかのボタンをクリックした後、dropResult変数を変更する必要があります。関数がdropResult変数の正しい値を返すようにするには、どうすれば適切に記述できますか? クロージャーに関することは知っていますが、この問題を修正する方法がよくわかりません。手伝ってくれてありがとう。

4

5 に答える 5

0

Gaby aka の答えを「拡張」しますが、彼は完全に正しいと思います。プライベート メソッドとパブリック メソッドだけをより具体的にします。それらにアクセスする方法、および実際にイベントを特定のボタンにバインドすることもできます。ここでフィドルを確認できます [http://jsfiddle.net/qsDz6/][1]

HTML

<input type="button" id="button1" value="button 1" />
<input type="button" id="button2" value="button 2">

<input type="button" id="actualValue" value="Actual Value of _dropResult">

JS

var files = (function(__name){
     var _name = __name;
     var _dropResult = null;

    /*Private  */
    function init(){
        eventHandler();
    }    

     function eventHandler(){
       $(document).on("click","#button1", $.proxy($r.actionButton1,this));
       $(document).on("click","#button2", $.proxy($r.actionButton2,this));
       $(document).on("click", "#actualValue", $.proxy($r.dropResult,this));
     }

    /*Public */
     var $r = {}; //will make public any method

     $r.actionButton1 = function(){         
       _dropResult = true;        
       alert(_dropResult);
     }

     $r.actionButton2 = function(){
       _dropResult = false;         
        alert(_dropResult);
     }        

     $r.dropResult = function(){alert(_dropResult);}


     init();    

     return $r;    
})("files");

ハッピーコーディング

于 2013-05-28T18:50:56.493 に答える