1

特にjsとjqueryの使用法を考慮していくつかの一般的なことを整理しようとしています。データを別の関数に渡す方法やアプリケーションを構築する方法を明確に理解せずに、stackoverflowを通じて数百万の回答を読んでいました。

私はかなり普通のスキーマを手に入れました:

$(document).ready(function){

   $('.classname').click(function() { 
      var varone = $(this).attr('name');
   });

   $('.class2name').click(function(){
      var vartwo = $(this).height();
   });

});

次に、(document).readyから出て、次のような処理を行いたい

    function dosmth() {
       var freaksum = varone + vartwo;
    }

それ、どうやったら出来るの?グローバルを作成するのではなく、オブジェクトを渡したい。

大規模なアプリケーションを開発するそのようなことを処理するためのプラクティスは何ですか?他の関数からの変数をたくさん使ってたくさんの操作をしている関数が欲しいです。運用機能でこれらすべてのオブジェクトを取得するにはどうすればよいですか?これらの変数を単一の関数内ではなく、次のようないくつかの異なる関数で使用する必要がある場合はどうなりますか?

function dosmth() {
   var freaksum = varone + vartwo;
}

function dosmthelse() {
   var freakmult = varone * vartwo;
}

などなど

長い間ごめんなさい、ありがとう。

4

1 に答える 1

1

現在の例では、2つの関数は変数にアクセスできず、同じスコープに存在dosmthしないためです。これを回避する唯一の方法は、クリックイベントと関数の両方で使用できるスコープにこれらの変数を存在させることです。dosmthelsevaronevartwo

最も簡単な方法は、単にそれらをグローバルにすることです。

var varone, vartwo;

$(document).ready(function){
   $('.classname').click(function() { 
      varone = $(this).attr('name');
   });

   $('.class2name').click(function(){
      vartwo = $(this).height();
   });
});
function dosmth() {
   var freaksum = varone + vartwo;
}

function dosmthelse() {
   var freakmult = varone * vartwo;
}

ただし、通常はグローバルスコープを使用しない方がよいため、代わりに次のように使用できます。

(function($){
    var varone, vartwo;
    $(document).ready(function){
       $('.classname').click(function() { 
          varone = $(this).attr('name');
       });

       $('.class2name').click(function(){
          vartwo = $(this).height();
       });
    });
    function dosmth() {
       var freaksum = varone + vartwo;
    }

    function dosmthelse() {
       var freakmult = varone * vartwo;
    }
})(jQuery);

これで、グローバル変数はなくなり、両方の場所で引き続きアクセスできます。

(状況に応じて)これらの値を要素などの別の場所に保存することもできます。

あなたが解決しようとしている現実の状況についてのより多くの情報がなければ、それは私が行くことができる限りです。

于 2012-07-11T20:59:11.290 に答える