2016-06-14 22 views
0

ユーザーが特定のボタンをクリックしたときに変数を設定する関数がいくつかあります。次に、変数を渡さない限り、その変数をAJAX関数に渡します。ここでjQuery - 関数内の変数を別の関数に渡す

は一例です。

$('#Button1').on('click', function(e) { 
    var add1 = 'yes'; 
    e.preventdefault(); 
}) 
$('#Button2').on('click', function(e) { 
    var add1 = 'no'; 
    e.preventdefault(); 
}) 
$('#DoneButton').on('click', function(e) { 
    submitLink = 'submit.php' 
    dataString = 'add=' + add1; 
    $.ajax({ 
     type: "POST", 
     url: submitLink, 
     data: dataString, 
     cache: false, 
     success: function(data) { 

      /* My Success Notification Here */ 
     } 
    }); 
    e.preventdefault(); 
}) 

私としても、関数の外で変数を宣言しようとした:どちらか動作しないこと

var add1; 

、単に「未定義」としてアップします

これを解決するにはどうすればよいですか?

+1

なぜなら、 'var'を追加するとonclickに局所的にスコープされるからです。 – epascarello

+0

他のすべての関数がそれをフェッチできるようにするにはどうすればよいですか? @epascarello – Mason

+0

varを使用しないでください。 – epascarello

答えて

3

varを内部にドロップすると、変数参照のクリックにローカルスコープが設定されません。

var add1; 
$('#Button1').on('click', function(e) { 
    add1 = 'yes'; 
    e.preventdefault(); 
}) 
$('#Button2').on('click', function(e) { 
    add1 = 'no'; 
    e.preventdefault(); 
}) 
$('#DoneButton').on('click', function(e) { 
    submitLink = 'submit.php' 
    dataString = 'add=' + add1; 
    $.ajax({ 
    type: "POST", 
    url: submitLink, 
    data: dataString, 
    cache: false, 
    success: function(data) { 

     /* My Success Notification Here */ 
    } 
    }); 
    e.preventdefault(); 
}); 
+0

パーフェクト、それは簡単な笑だったとは思わなかった。これは私の問題を修正しました。ありがとう! – Mason

0

var add1を関数に入れると、その関数でローカルに宣言されます。外部に宣言したい場合は、関数の外にvar add1;を追加してから、関数内のvarを削除する必要があります。つまり、 `add1 = 'no';

0

すべての関数がアクセスできるように変数を共有スコープに定義する必要があります(この場合はグローバルスコープです)。次に、関数のローカルスコープ内で値を割り当てます。

あなたが欠けていた単純な部分は、var myVarを使用して共有スコープでそれを宣言すると、割り当て時にvarキーワードを再度使用する必要はありません。同じ名前を持っているかどうかにかかわらず、関数のローカルスコープ内に存在します。

関連する問題