[英]Can't get value from global variable
我有两个选择元素。 我试图通过使一些变量全局来清理我的旧代码。
在我有这样的事情之前:
var user = $('#my_SiteUsers').val();
问题是,现在我只能从这个变量中获取值,有时我可能需要像innerHTML这样的东西,而我不必为此创建一个新变量。
所以我创建了一个名为user的全局变量。
在document.ready开始。但是现在我的变量用户和组没有给我我需要的值。 例如,警报正在触发,因为未选择默认选项。 对不起,如果问题不明确。 如果有帮助,我可以发布旧代码。
$(document).ready(function(){
user = $('#my_SiteUsers');
group = $('#my_SiteGroups');
groupsAssigned = $("#my_SPGroupsAssigned");
groupAvailable = $("#my_SPGroupsAvailable");
userAssigned = $("#my_SPUsersAssigned").html("");
userAvailable = $("#my_SPUsersAvailable").html("");
$("button").click(function() { return false; });
populate();
});
function populate() {
//Populate the user list
strHTMLSiteUsers = "";
$().SPServices({
operation: "GetUserCollectionFromSite",
async: true,
completefunc: function(xData, Status) {
$(xData.responseXML).find("User").each(function() {
strHTMLSiteUsers += "<option value='" + $(this).attr("LoginName") + "'>" + $(this).attr("Name") + "</option>";
});
user.append(strHTMLSiteUsers);
}
});
if (user.val() == "default"){
//don't do anything
}else{
//if a user is selected, run
RefreshGroupLists();
}
//Populate the group list
strHTMLSiteGroups = "";
$().SPServices({
operation: "GetGroupCollectionFromSite",
async: true,
completefunc: function(xData, Status) {
$(xData.responseXML).find("Group").each(function() {
strHTMLSiteGroups += "<option value='" + $(this).attr("Name") + "'>" + $(this).attr("Name") + "</option>";
});
group.append(strHTMLSiteGroups);
}
});
if (group.val()=="default"){
//don't do anything
}else{
//if a user is selected, run
RefreshUserLists();
}
}
JSFiddle: http : //jsfiddle.net/JevpS/
由于$().SPServices
调用的异步性质,调用user.val()
(和group.val()
)的代码在相应的completefunc
处理程序之前执行。 您只能期望select
元素在内部(或在执行的时间顺序之后) completefunc
代码中填充选项。
尝试使用
var gl_var="";
要么
gl_var = undefined
请参阅http://www.adequatelygood.com/JavaScript-Scoping-and-Hoisting.html
在ready()
之上声明你的变量; 并在ready()
定义它们;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.