2016-06-14 208 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關鍵字,因爲這樣做會創建一個僅可訪問的不同變量在函數的本地範圍內,不管它是否具有相同的名稱。

相關問題