我创建了一个名为Customer的HTML项目,其中包含一些文本框,可以在其中输入一些文本和一个名为save的按钮。现在我想在JavaScript中创建一个函数来保存新的联系对象。
我试过了:
function SaveContact() {
var list = [];
var firstName = document.getElementById("first_name");
var lastName = document.getElementById("last_name");
var phoneN = document.getElementById("phone");
var emailN = document.getElementById("email");
var birthDay = document.getElementById("birth_day");
var birthMonth = document.getElementById("birth_month");
var birthYear = document.getElementById("birth_year");
list.push({ firstName, lastName, phoneN, emailN, birthDay, birthMonth, birthYear });
return list;
但它并没有改变任何事情。我哪里错了?
答案 0 :(得分:1)
以下行的问题:
list.push({ firstName, lastName, phoneN, emailN, birthDay, birthMonth, birthYear });
是你只保存价值。在JS中,您需要值和键。因此,您需要将其更改为:
list.push({ "firstName": firstName, "lastName": lastName, "phoneN": phoneN, "emailN": emailN, "birthDay": birthDay, "birthMonth":birthMonth, "birthYear":birthYear });
修改强>
您说要创建对象,但是您希望将它们存储为数组。要将它们存储为数组(以键作为其对齐的对象),只需删除{
行中的}
和push()
。
但是,我认为创建一个对象会更容易,如:
function SaveContact() {
return {
"firstName": document.getElementById("first_name"),
"lastName": document.getElementById("last_name"),
"phoneN": document.getElementById("phone"),
"emailN": document.getElementById("email"),
"birthDay": document.getElementById("birth_day"),
"birthMonth": document.getElementById("birth_month"),
"birthYear": document.getElementById("birth_year")
};
}
这个单语句函数只是创建并返回object literal,而不是将值赋给变量,然后将它们放入数组/对象中。
但是如果你真的想要一个数组,只需用{
和}
替换[
和]
并删除密钥。这将为您提供当前尝试使用您的程序实现的输出。
答案 1 :(得分:0)
Push不需要元素周围的{ ... }
:
array.push(item1, item2, ..., itemX)
(来自here)
另外,请注意您将DOM元素存储在list
中。你可能需要他们的价值而不是元素,但这取决于你尝试做什么......
或者你可以这样做:
obj = {}
obj.name = document.getElementById("first_name")
// ... more fields
list.push(obj)