Javascript 全局使用jQuery中的变量

Javascript 全局使用jQuery中的变量,javascript,jquery,Javascript,Jquery,我正在尝试使用登录用户名作为全局变量,该变量可以传递给内部表单,是否有一种方法可以将登录用户名变量传递给以下其他函数: 请任何人帮忙: JavaScript: $(function() { function userLogin() { userName = $('#user').val(); var password = $('#pass').val(); } function requestDemo() {

我正在尝试使用登录用户名作为全局变量,该变量可以传递给内部表单,是否有一种方法可以将登录用户名变量传递给以下其他函数: 请任何人帮忙:

JavaScript:

    $(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(){
)中它们只在闭包内部可见,而在闭包外部不可见,因此变量不是全局可用的。