【发布时间】:2013-10-01 23:44:01
【问题描述】:
我有一个名为 userValue 的全局变量。当页面加载时,此值正在查找所选选项并存储该选项值。加载时它将存储默认值或 null,因为该选项已禁用。但是,onchange(每个站点动态填充更多选项),我试图全局存储所选选项的值,以便我可以简单地继续重用变量 userValue。当我包含以下内容时,我下面的内容可以正常工作:
userValue = $('#my_SiteUsers').find(':selected').val();
在 RefreshGroupList() 函数中,但如果我必须这样做,这不会违背拥有全局变量的目的吗?现在,我所做的任何更改都会返回“默认”
HTML:
<select id="my_SiteUsers" style="width:200px;" onchange="RefreshGroupLists()">
<option value='default' disabled="disabled">Select a user</option>
</select>
JS:
var user, userValue, userText, group, strHTMLSiteUsers, strHTMLSiteGroups, strHTMLAvailable, strHTMLAssigned, arrOptionsAssigned, arrGroups, arrUsers, intOpts, booMatch, booErr;
$(document).ready(function(){
user = $('#m
y_SiteUsers');
userValue = $('#my_SiteUsers').find(':selected').val();
userText = $('#my_SiteUsers').find(':selected').text();
group = $('#my_SiteGroups');
groupsAssigned = $("#my_SPGroupsAssigned").html("");
groupAvailable = $("#my_SPGroupsAvailable").html("");
userAssigned = $("#my_SPUsersAssigned").html("");
userAvailable = $("#my_SPUsersAvailable").html("");
$("button").click(function() { return false; });
populateUsers();
populateGroups();
});
function RefreshGroupLists(){
//Populate the Groups Assigned
$().SPServices({
operation: "GetGroupCollectionFromUser",
userLoginName: userValue,
async: true,
completefunc: function(xData, Status) {
$(xData.responseXML).find("errorstring").each(function() {
alert("User not found");
booErr = "true";
return;
});
$(xData.responseXML).find("Group").each(function() {
strHTMLAvailable += "<option value='" + $(this).attr("Name") + "'>" + $(this).attr("Name") + "</option>";
arrOptionsAssigned[intOpts] = $(this).attr("Name");
intOpts = intOpts + 1;
});
groupsAssigned.append(strHTMLAvailable);
}
});
}
【问题讨论】:
-
那个javascript在哪里?正文或头部或外部js文件中的内部脚本标记?
-
$ 未定义:您需要在小提琴中包含 jQuery :)
-
@watson 对不起,我只在 jsfiddle 中发布了相关代码,而不是全部内容。我的网站有 Jquery 和其他所需的框架。
-
@UFL1138 它在一个外部文件中
标签: javascript jquery variables global-variables