Javascript 全局使用jQuery中的变量
我正在尝试使用登录用户名作为全局变量,该变量可以传递给内部表单,是否有一种方法可以将登录用户名变量传递给以下其他函数: 请任何人帮忙: JavaScript:Javascript 全局使用jQuery中的变量,javascript,jquery,Javascript,Jquery,我正在尝试使用登录用户名作为全局变量,该变量可以传递给内部表单,是否有一种方法可以将登录用户名变量传递给以下其他函数: 请任何人帮忙: JavaScript: $(function() { function userLogin() { userName = $('#user').val(); var password = $('#pass').val(); } function requestDemo() {
$(function() {
function userLogin() {
userName = $('#user').val();
var password = $('#pass').val();
}
function requestDemo() {
var userName = userName; // This should inherit the username from login function?
}
});
你只需插入
var globalUsername = ''
var globalPass = '';
就在下面:
$(function() {
像这样:
$(function() {
var globalUsername = ''
var globalPass = '';
...
var globalUsername = ''
var globalPass = '';
$(function() {
...
或以上,如下图所示:
$(function() {
var globalUsername = ''
var globalPass = '';
...
var globalUsername = ''
var globalPass = '';
$(function() {
...
之后,您可以在脚本中的每个位置使用这两个变量。您只需插入
var globalUsername = ''
var globalPass = '';
就在下面:
$(function() {
像这样:
$(function() {
var globalUsername = ''
var globalPass = '';
...
var globalUsername = ''
var globalPass = '';
$(function() {
...
或以上,如下图所示:
$(function() {
var globalUsername = ''
var globalPass = '';
...
var globalUsername = ''
var globalPass = '';
$(function() {
...
之后,您可以在脚本中的每个位置使用这两个变量。我们已经有了一个全局变量。我们直接在jQuery对象上创建变量怎么样。然后,在我们的各种函数中,我们可以简单地检查它们是否存在,如果不存在则实现它们,如果存在则引用它们 看看你的小提琴,这也可以很轻松地完成——只需让每个需要访问全局名称空间的函数创建或引用它
$(function() {
$.bob_jsNS = $.bob_jsNS || {};
var mainurl = 'http://localhost:9000';
/* Login User */
$("#submit-login").click(function() {
userLogin();
});
function userLogin() {
$.bob_jsNS.user = $.bob_jsNS.user || {};
var myUser = $.bob_jsNS.user;
myUser.userName = $('#user').val();
var password = $('#pass').val();
// var data = $("#login-user").serialize();
var data = {
"userName": myUser.userName
}
$('#sdlc-gif').show();
// I simply reference the global namespace to get the userName.
if (myUser.userName != '' && password != '') {
// Removed for clarity. There was code here.
}
}
function requestDemo() {
/*****
* Any time I need access to any part of the global namespace,
* I should first check that it's there -- and if not, create it.
* These first few lines happen on any function that will need to get
* or set global values or functions.
***/
$.bob_jsNS = $.bob_jsNS || {};
$.bob_jsNS.user = $.bob_jsNS.user || {};
var myUser = $.bob_jsNS.user;
// If we don't have a username, set it blank.
// May not be an issue, but it may break otherwise.
var myUser.userName = myUser.userName || "";
var myUser.first = ('#firstName').val();
var myUser.last = ('#lastName').val();
var myUser.title = ('#jobTitle').val();
var myUser.email = ('#email').val();
var myUser.comments = ('#comments').val();
var myUser.app1 = ('#app1').val();
var myUser.app2 = ('#app2').val();
var myUser.app3 = ('#app3').val();
var data = {
"userName": myUser.userName,
"firstName": myUser.first,
"lastName": myUser.last,
"jobTitle": myUser.title,
"email": myUser.email,
"comments": myUser.comments,
"app1": myUser.app1,
"app2": myUser.app2,
"app3": myUser.app3
}
/***
* More code was here, abbreviated for clarity.
***/
}
/* Provide feedback form */
$("#submit-feed").click(function() {
provideFeedback();
});
/* Provide Feedback */
function provideFeedback() {
// var data = $("#provide-feed").serialize();
$.bob_jsNS = $.bob_jsNS || {}
$.bob_jsNS.user = $.bob_jsNS.user || {};
var userName = $.bob_jsNS.user.userName || "";
var q1 = $("input[name='group1']:checked").val();
var q2 = $("input[name='group2']:checked").val();
var q3 = $("input[name='group3']:checked").val();
var q4 = $("#ans4").val();
var q5 = $("#ans5").val();
var data = {
"userName": userName,
"q1": q1,
"q2": q2,
"q3": q3,
"q4": q4,
"q5": q5
}
}
});
我们已经有了一个全局变量。我们直接在jQuery对象上创建变量怎么样。然后,在我们的各种函数中,我们可以简单地检查它们是否存在,如果不存在则实现它们,如果存在则引用它们 看看你的小提琴,这也可以很轻松地完成——只需让每个需要访问全局名称空间的函数创建或引用它
$(function() {
$.bob_jsNS = $.bob_jsNS || {};
var mainurl = 'http://localhost:9000';
/* Login User */
$("#submit-login").click(function() {
userLogin();
});
function userLogin() {
$.bob_jsNS.user = $.bob_jsNS.user || {};
var myUser = $.bob_jsNS.user;
myUser.userName = $('#user').val();
var password = $('#pass').val();
// var data = $("#login-user").serialize();
var data = {
"userName": myUser.userName
}
$('#sdlc-gif').show();
// I simply reference the global namespace to get the userName.
if (myUser.userName != '' && password != '') {
// Removed for clarity. There was code here.
}
}
function requestDemo() {
/*****
* Any time I need access to any part of the global namespace,
* I should first check that it's there -- and if not, create it.
* These first few lines happen on any function that will need to get
* or set global values or functions.
***/
$.bob_jsNS = $.bob_jsNS || {};
$.bob_jsNS.user = $.bob_jsNS.user || {};
var myUser = $.bob_jsNS.user;
// If we don't have a username, set it blank.
// May not be an issue, but it may break otherwise.
var myUser.userName = myUser.userName || "";
var myUser.first = ('#firstName').val();
var myUser.last = ('#lastName').val();
var myUser.title = ('#jobTitle').val();
var myUser.email = ('#email').val();
var myUser.comments = ('#comments').val();
var myUser.app1 = ('#app1').val();
var myUser.app2 = ('#app2').val();
var myUser.app3 = ('#app3').val();
var data = {
"userName": myUser.userName,
"firstName": myUser.first,
"lastName": myUser.last,
"jobTitle": myUser.title,
"email": myUser.email,
"comments": myUser.comments,
"app1": myUser.app1,
"app2": myUser.app2,
"app3": myUser.app3
}
/***
* More code was here, abbreviated for clarity.
***/
}
/* Provide feedback form */
$("#submit-feed").click(function() {
provideFeedback();
});
/* Provide Feedback */
function provideFeedback() {
// var data = $("#provide-feed").serialize();
$.bob_jsNS = $.bob_jsNS || {}
$.bob_jsNS.user = $.bob_jsNS.user || {};
var userName = $.bob_jsNS.user.userName || "";
var q1 = $("input[name='group1']:checked").val();
var q2 = $("input[name='group2']:checked").val();
var q3 = $("input[name='group3']:checked").val();
var q4 = $("#ans4").val();
var q5 = $("#ans5").val();
var data = {
"userName": userName,
"q1": q1,
"q2": q2,
"q3": q3,
"q4": q4,
"q5": q5
}
}
});
我建议根据您对持久性的需求,使用
localStorage
或sessionStorage
。你可以阅读更多关于两者差异的内容
使用下面的方法,您可以将用户名值分配给web浏览器的本地存储,然后在需要时从本地存储中检索该值,您不必太担心变量的放置范围
$(function() {
function userLogin() {
localStorage.setItem('username', $('#user').val());
var password = $('#pass').val();
}
function requestDemo() {
var userName = localStorage.getItem('username');
}
});
我建议根据您对持久性的需求,使用
localStorage
或sessionStorage
。你可以阅读更多关于两者差异的内容
使用下面的方法,您可以将用户名值分配给web浏览器的本地存储,然后在需要时从本地存储中检索该值,您不必太担心变量的放置范围
$(function() {
function userLogin() {
localStorage.setItem('username', $('#user').val());
var password = $('#pass').val();
}
function requestDemo() {
var userName = localStorage.getItem('username');
}
});
依赖这样的全局变量通常是不好的做法。您的问题的答案确实是使用如下所述的窗口对象,但我建议您考虑重新思考您组织上述内容的方式,以避免需要使用全局范围。例如,为什么您甚至需要将范围划分为这两个函数?或者你可以像那样把用户名传给requestDemo(username)?这样依赖全局变量通常是不好的做法。您的问题的答案确实是使用如下所述的窗口对象,但我建议您考虑重新思考您组织上述内容的方式,以避免需要使用全局范围。例如,为什么您甚至需要将范围划分为这两个函数?或者您可以像这样将用户名传递到requestDemo(用户名)中?请注意,如果您将变量放入闭包(
$(function(){
)中,它们只在闭包内部可见,而在闭包外部不可见-因此变量不是全局可用的。请注意,如果您将变量放入闭包($(function(){
)中它们只在闭包内部可见,而在闭包外部不可见,因此变量不是全局可用的。