HTML DOM - 本地存储

问题描述 投票:0回答:1

我试图使用 JS 中的 localStorage 进行基本的注册/登录操作

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>login</h1>
    <h2>username</h2>
    <input id = "userSave">
    <h2>password</h2>
    <input id = "passSave">
    <button onclick = "saved()">save</button>
    <h2 id = "textSave"></h2>

    <h1>sign up</h1>
    <h2>username</h2>
    <input id = "userLoad">
    <h2>password</h2>
    <input id = "passLoad">
    <button onclick = "loaded()">load</button>
    <h2 id = "textLoad"></h2>

    <script>
        function saved() {
            let text = document.getElementById("textSave").innerHTML;
            let username = document.getElementById("userSave").value;
            let password = document.getElementById("passSave").value;

            localStorage.setItem(username, password);
            text = "saved";
        }

        function loaded() {
            let text = document.getElementById("textLoad").innerHTML;
            let username = document.getElementById("userLoad").value;
            let password = document.getElementById("passLoad").value;

            if (localStorage.getItem(username) == password) {
                text = "welcome";
            }
            else {
                text = "login failed";
            }
        }
    </script>
</body>
</html>

我已经检查了一切。拼写、点击次数、函数名称和大部分内容都很好,但无法正常工作

javascript html simple-html-dom
1个回答
0
投票

我假设你所说的“它不起作用”的意思是你没有看到任何 DOM 更改。字符串是不可变的,因此它被视为“按值传递”。

如果您想更改 DOM,请将文本引用设置为元素:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>login</h1>
    <h2>username</h2>
    <input id = "userSave">
    <h2>password</h2>
    <input id = "passSave">
    <button onclick = "saved()">save</button>
    <h2 id = "textSave"></h2>

    <h1>sign up</h1>
    <h2>username</h2>
    <input id = "userLoad">
    <h2>password</h2>
    <input id = "passLoad">
    <button onclick = "loaded()">load</button>
    <h2 id = "textLoad"></h2>

    <script>
        function saved() {
            let text = document.getElementById("textSave");
            let username = document.getElementById("userSave").value;
            let password = document.getElementById("passSave").value;

            localStorage.setItem(username, password);
            text.innerHTML = "saved";
        }

        function loaded() {
            let text = document.getElementById("textLoad");
            let username = document.getElementById("userLoad").value;
            let password = document.getElementById("passLoad").value;

            if (localStorage.getItem(username) == password) {
                text.innerHTML = "welcome";
            }
            else {
                text.innerHTML = "login failed";
            }
        }
    </script>
</body>
</html>

旁注:我意识到这是为了练习,所以我不会深入研究它 - 但是将密码存储为明文,并在客户端上(并对密码进行客户端验证)对于任何实际项目来说都不是一个好主意

© www.soinside.com 2019 - 2024. All rights reserved.