函数保存JS对象不工作

function to save JS object not working

本文关键字:工作 对象 JS 保存 函数      更新时间:2023-09-26

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

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

以下行的问题:

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")
    };
}

这个单语句函数只是创建并返回一个对象文字,而不是将值分配给变量,然后将它们放入数组/对象中。

但是,如果您确实想要一个数组,只需将{}替换为[],然后移除键即可。这将为您提供当前正试图通过程序实现的输出。

Push不需要元素周围的{ ... }

array.push(item1, item2, ..., itemX)

(从这里)

另外,请注意,您将DOM元素存储在list中。你可能需要他们的价值观,而不是元素,但这取决于你试图做什么…

编辑-在看到乔纳森的答案之后

或者你可以做:

obj = {}
obj.name = document.getElementById("first_name")
// ... more fields
list.push(obj)