为什么我不能把这些变量放在全球范围内?它只适用于本地。

时间:2016-05-13 04:01:14

标签: javascript jquery object

下面的代码将写入FirstName LastName是X岁。但是,如果我想在按钮单击中拉出jquery变量val()变量并使它们成为全局变量,则它不起作用。我不知道为什么。

function Household (firstName, lastName, age){


  var _list = {
      "_fname": firstName,
      "_lname": lastName,
      "_age": age
  };

this.addPerson = function () {

    var writeIn = _list._fname + " " + _list._lname + " is " + _list._age + " years old.";

    return writeIn;
 }

}



$('#btnSub').click(function(){

  var _getFName = $('#enterFName').val();
  var _getLName = $('#enterLName').val();
  var _getAge = $('#enterAge').val();

  var nuHouse = new Household (_getFName, _getLName, _getAge);

  var newNuHouse = nuHouse.addPerson();

  $('#insertAnswer').html(newNuHouse);

});

为什么这不起作用?我希望将值设置为全局值,以便通过其他按钮点击来访问它们。

function Household (firstName, lastName, age){


var _list = {
    "_fname": firstName,
    "_lname": lastName,
    "_age": age
};

this.addPerson = function () {

    var writeIn = _list._fname + " " + _list._lname + " is " + _list._age + " years old.";

    return writeIn;
}

}

var _getFName = $('#enterFName').val();
var _getLName = $('#enterLName').val();
var _getAge = $('#enterAge').val();

var nuHouse = new Household (_getFName, _getLName, _getAge);


$('#btnSub').click(function(){

   var newNuHouse = nuHouse.addPerson();

   $('#insertAnswer').html(newNuHouse);

});

提前谢谢!

2 个答案:

答案 0 :(得分:2)

底部代码不起作用,因为您在脚本执行时获取值,而不是在单击按钮时获取值。

您可以继续全局声明变量,但将赋值移动到事件侦听器,但减少全局变量的数量通常是有益的。如果您告诉我们您打算如何使用这些值,我们可能会建议更好的方法。

答案 1 :(得分:0)

您需要在事件点击时更新这些变量的值。 因为在第一次页面加载时,这些输入没有任何价值。

var _getFName;
var _getLName;
var _getAge;

var nuHouse;


$('#btnSub').click(function(){
   _getFName = $('#enterFName').val();
   _getLName = $('#enterLName').val();
   _getAge = $('#enterAge').val();

   nuHouse = new Household (_getFName, _getLName, _getAge);
   var newNuHouse = nuHouse.addPerson();

   $('#insertAnswer').html(newNuHouse);

});