Неопределенный ключ и пустое значение в локальном хранилище - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть форма регистрации в формате HTML, которая принимает данные и сохраняет их в массиве JavaScript, затем использует JSON.stringify и, наконец, сохраняет их в локальном хранилище.Проблема в том, что ключ undefined (мой ключ - электронная почта), а значение [object Object].Кто-нибудь может помочь мне решить эту проблему?Спасибо?

<!DOCTYPE html>
<html>
<head>
    <title>Learning</title>
</head>
<body>
    <form id="usrDetails" onclick="return false">
        <h1>sign up</h1>
        <input type="text" name="username" placeholder="Username"/><!--the name attribute describes input name and is used as reference.-->
        <input type="text" name="email" placeholder="Email"/><!--placeholder defines the text to appear in the blank box-->
        <input type="password" name="password" placeholder="Password"/>
        <input type="password" name="password2" placeholder="Retype Password"/>
        <input type="submit" onclick="storeUser();"/> <!--value defines the text to appear on the button-->
    </form>

    <p id="result"></p>

    <script>
        function storeUser() {
            var usrObject={};
            if (document.getElementById("username") !== null) {
                usrObject.username = document.getElementById("Username").value;
            }
            if (document.getElementById("email") !== null) {
                usrObject.email = document.getElementById("email").value;
            }
            if (document.getElementById('password') !== null) {
               usrObject.password = document.getElementById("password").value;
            }
            if (document.getElementById('password2') !== null) {
                usrObject.password2 = document.getElementById("password2").value;
            }
            localStorage.setItem(usrObject.email, usrObject) 
            JSON.stringify(usrObject);
            //localStorage[usrObject.email] = JSON.stringify(usrObject);
            document.getElementById("result").innerHTML = "<b>Registration successful</b>"
        }

    </script>
</body>

1 Ответ

0 голосов
/ 06 декабря 2018

Вы используете document.getElementById(), но у вас нет идентификаторов на ваших входах.Ваша форма должна быть:

<form id="usrDetails" onclick="return false">
    <h1>sign up</h1>
    <input type="text" id="Username" name="username" placeholder="Username"/><!--the name attribute describes input name and is used as reference.-->
    <input type="text" id="email" name="email" placeholder="Email"/><!--placeholder defines the text to appear in the blank box-->
    <input type="password" id="password" name="password" placeholder="Password"/>
    <input type="password" id="password2" name="password2" placeholder="Retype Password"/>
    <input type="submit" onclick="storeUser();"/> 
</form>

Кроме того, строка:

localStorage[usrObject.email] = JSON.stringify(usrObject);

Должна быть:

localStorage.setItem(usrObject.email, JSON.stringify(usrObject));

... при условии, что вы хотите, чтобы адрес электронной почты былбыть ключом хранимого пользовательского объекта.

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