所以我想做的是,获取表单中输入的数据并将它们存储在对象内各自的变量中。之后,我想将所述对象附加到一个空数组并重复该过程。使用函数 showMe()。,我想打印指定索引处的值。但是,无论我设置什么索引,它都只给出添加到数组中的最后一项的值。我哪里出错了??
var USERS = [];
var user= {
firstName: "None",
lastName : "None",
age : 0,
bodyType : "None",
height : 0,
bdayDay : 0,
bdayMonth : "None",
bdayYear : 0,
gender: "None"
};
function addnew(){
user.firstName = document.getElementById("fname").value;
user.lastName = document.getElementById("lname").value;
user.age = document.getElementById("age").value;
if (document.getElementById("genMale").checked)
user.bodyType = document.getElementById("btMale").value;
else
user.bodyType = document.getElementById("btFemale").value;;
user.height = document.getElementById("Height").value;
if (document.getElementById("genMale").checked)
user.gender = document.getElementById("genMale").value;
else
user.gender = document.getElementById("genFemale").value;
USERS.push(user);
}
function showMe(){
console.log(USERS[1].firstName);
}
最佳答案
您的代码中只有一个全局变量 user
。
我认为您想要采用面向对象的风格,其中您的 var user
是一个原型(prototype)。请参阅MDN .
除此之外,eykjs 的解决方案是正确的。您的快速解决方案是必须在函数内初始化变量:
function addnew(){
var user = {
...
您的代码不起作用的原因是,在 JavaScript 中,对象是通过引用传递的,这本质上意味着如果您将一个对象分配给另一个变量,它们将是同一个对象。
关于javascript - Javascript 中的数组未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47103011/