jQuery - 将函数内的变量传递给另一个函数

问题描述:

我有几个不同的函数,如果用户单击某个按钮时会设置一个变量。然后它将该变量传递给一个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

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

var add1放在该函数中在该函数中本地声明它。如果你想在外面声明它,你必须在函数外部添加var add1;,然后删除函数内部的var,即`add1 ='no';

您需要在共享作用域中定义变量,以便所有的函数都可以访问它,在这种情况下,这是全局作用域。然后在函数的本地范围内为其赋值。

您丢失的简单部分是,一旦您使用var myVar将它声明在共享范围中,则在分配给它时不需要再次使用var关键字,因为这样做会创建一个仅可访问的不同变量在函数的本地范围内,不管它是否具有相同的名称。