函数保存JS对象不起作用

时间:2015-12-13 19:35:07

标签: javascript function object

我创建了一个名为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;

但它并没有改变任何事情。我哪里错了?

2 个答案:

答案 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)