将javascript变量传递给函数时,会得到一个空值
我正在使用Jquery,我确实创建了一个变量,在这里我确实返回了一个json对象。这个函数等待两个参数,第一个是源,第二个是全局变量,我希望函数保存它。但是当我想从全局变量中获取值时,它是空的 这是我的密码将javascript变量传递给函数时,会得到一个空值,javascript,jquery,Javascript,Jquery,我正在使用Jquery,我确实创建了一个变量,在这里我确实返回了一个json对象。这个函数等待两个参数,第一个是源,第二个是全局变量,我希望函数保存它。但是当我想从全局变量中获取值时,它是空的 这是我的密码 $(function(){ var selectedSuggestion1 = null; var selectedSuggestion2 = null; loadSuggestions(responseObject); $('#btnShow').click(function(){
$(function(){
var selectedSuggestion1 = null;
var selectedSuggestion2 = null;
loadSuggestions(responseObject);
$('#btnShow').click(function(){
var drp = $('#range1').data('daterangepicker');
console.log(selectedSuggestion1);
var params = {};
params['id'] = selectedSuggestion1.id;
params['type'] = selectedSuggestion1.type;
params['startDate'] = drp.starDate.format('YYYY-MM-DD');
params['endDate'] = drp.endDate.format('YYYY-MM-DD');
console.log(params);
});
function loadSuggestions(comparative){
var arrCustomerSug = new Array();
$.each(comparative.lsCustomersSug, function(i, e){
arrCustomerSug.push({
type: 1,
value: e.name,
id: e.id
});
});
var cfgAutoComplete = function(source, variable){
var jsonResponse = {
source: source,
select: function(event, ui){
variable = ui.item;
},
search: function(event, ui){},
messages:{
noResults: '',
results: function(){}
}
};
return jsonResponse;
}
$('#inpCustomerSuggestion1').autocomplete(cfgAutoComplete(arrCustomerSug, selectedSuggestion1));
正是在“cfgAutoComplete”函数中。我将全局变量“selectedSuggestion1”传递给函数,当select函数处于活动状态时,该函数必须保存变量上的值。但不是吗
在click函数中,我尝试获取值,但这个值为空。
如果我按原样放置全局变量,我得到值。但是我需要它是动态的。在这个函数调用中
cfgAutoComplete(arrCustomerSug, selectedSuggestion1)
selectedSuggestion1
是一个字符串。它的值被传递到cfgAutoComplete,而不是全局变量的引用。因此,在您的函数中,更新变量不会像您所希望的那样更新全局var
快速修复,以字符串形式传入全局文件的名称:
cfgAutoComplete(arrCustomerSug, "selectedSuggestion1")
然后在cfgautomplete中,通过窗口
对象查找并更新所需的全局变量
var cfgAutoComplete = function(source, globalName){
var jsonResponse = {
source: source,
select: function(event, ui){
window[globalName] = ui.item;
...
显然,传递给select
的函数没有被执行。从那里开始。