Как вы можете сохранить массив как новый объект каждый раз, когда функция выполняется, а не перезаписывать мой старый массив - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь сделать простую регистрацию и войти в систему, но я могу зарегистрировать только 1 новое имя пользователя и пароль, и в следующий раз он будет перезаписан. Я знаю, что [2] после objpeople означает, что он пишет только в этой строке, но что нужно сделать, чтобы он каждый раз создавал новый объект?

var objpeople = [
            {
                username: "adam",
                password: "coll",
                email: "neilcoll@mail.com"
            },
            {
                username: "jack",
                password: "mc",
                email: "jackmcgmail.com"
            }
        ];


    function register()
    {
        var Rusername = document.getElementById("Rname").value  
        var Rpassword = document.getElementById("Rpassword").value
        var Remail = document.getElementById("Remail").value
        var info = {};


        objpeople.push(info);
        objpeople[2].username=Rusername;
        objpeople[2].password=Rpassword;
        objpeople[2].email=Remail;


        let convobjpeople = JSON.stringify(objpeople)
        localStorage.people = convobjpeople

        document.getElementById("logbtn").innerHTML = "Cart";
        document.getElementById("logbtn").href="cart.html";
        localStorage.setItem('logged', 'true');
        return ;    
    }

edit: реализация вашего кода

    var objpeople = [
            {
                username: "neil",
                password: "coll",
                email: "neilcoll@gmail.com"
            },
            {
                username: "jack",
                password: "mc",
                email: "jackmc@gmail.com"
            }
        ];



    function register()
    {
        let my_object =  {
                username: "",
                password: "",
                email: ""
            }
            var Rusername = document.getElementById("Rname").value  
            var Rpassword = document.getElementById("Rpassword").value
            var Remail = document.getElementById("Remail").value

            my_object.username=Rusername;
            my_object.password=Rpassword;
            my_object.email=Remail;

            objpeople.push(my_object)

            let convobjpeople = JSON.stringify(objpeople)
            localStorage.people = convobjpeople

            document.getElementById("logbtn").innerHTML = "Cart";
            document.getElementById("logbtn").href="cart.html";
            localStorage.setItem('logged', 'true');
            return ;
    }

1 Ответ

0 голосов
/ 29 апреля 2020

Вы пытаетесь создать объекты и поместить их sh в массив?

Просто инициируйте объект

let my_object =  {
                username: "",
                password: "",
                email: ""
            }

и, когда вы хотите присвоить значения

var Rusername = document.getElementById("Rname").value  
var Rpassword = document.getElementById("Rpassword").value
var Remail = document.getElementById("Remail").value

 my_object.username=Rusername;
 my_object.password=Rpassword;
 my_object.email=Remail;

и, наконец,

objpeople.push(my_object)

Редактировать: он не должен на самом деле не так, но вы можете просто создать объект-реплику, который не будет передан на сервер. Например, создайте objpeople2 и вместо objpeople.push(my_object) просто выполните objpeople2.push(my_object), а затем objpeople = objpeople2 и, наконец,

let convobjpeople = JSON.stringify(objpeople). Таким образом, objpeople2 сохраняется как есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...