【问题标题】:Information not saving into Local Storage信息未保存到本地存储
【发布时间】:2016-01-15 20:59:33
【问题描述】:

Java 脚本

function getid() {
    'use strict';
    var pass1, pass2;
    pass1 = document.getElementById("pass1").value;
    pass2 = document.getElementById("pass2").value;
    if (pass1 !== pass2) {
        window.alert("Passwords Do not match");
        document.getElementById("pass1").value = "";
        document.getElementById("pass2").value = "";

    } else {
        logininfo[index] = {
            fname: document.getElementsByName("firstName").value,
            lname: document.getElementsByName("lastNane").value,
            student: document.getElementsByName("studentn").value,
            password: document.getElementsByName("password2").value
        };
        index++;
        localStorage.setItem("login", JSON.stringify(logininfo));
        window.location = "login.html";
    }
}

HTML

<form>
  <div class="login-card">
    <img src="rsz_logo.gif" alt="North Park Logo" >

    <h1>Register</h1><br>
    <input type="text" name="firstName" placeholder="First Name" required>
    <input type="text" name="lastName" placeholder="Last Name" required>
    <input type="text" name="studentn" placeholder="Student Number" required>
    <input type="password" name="pass1" placeholder="Password" required>
    <input type="password" name="pass2" placeholder="Re-type Password" required>

    <input type="submit" name="login" class="login login-submit" value="Register" onclick="getid()">

    <div class="login-help">
      <a href="login.html">Back to Login</a>
    </div>
  </div>
</form>

我在这里要做的是密码验证,看看 pass1 = pass2,如果它们相等,则进入登录页面并将信息存储到本地存储中,但如果不是,则清除此人的密码字段重新输入密码。

信息不会保存到本地存储中。单击提交按钮后,页面刷新并且信息在 url 中是可行的,但在本地存储中是不可行的。我试图坚持使用 HTML 和 Javascript。

【问题讨论】:

  • 你在哪里尝试从本地存储中获取登录数据?或者换一种说法,你怎么知道 setItem 不起作用?
  • 我相信这与 HTML5 本地存储有关。你初始化本地数据库了吗?可以参考this link

标签: javascript html local-storage


【解决方案1】:

您缺少执行此操作所需的 ID 标签:

<input type="password" name="pass1" id="pass1" placeholder="Password" required>
<input type="password" name="pass2" id="pass2" placeholder="Re-type Password" required>

这是因为您正在使用:

document.getElementById("pass1").value = "";
document.getElementById("pass2").value = "";

没有 ID,该函数就没有任何东西可以获取。

【讨论】:

  • 或者,您可以使用 jQuery 选择器 ($("input[name=pass1]")),但使用 ID 更好。
  • @durbnpoisn 非常感谢!它工作不正常!只是一个问题,使用 name 和 id 有区别吗?
  • "name" 通常在发送表单时用于接收方。 “id”用于客户端的东西。 JavaScript 和 CSS 更喜欢使用 id。
【解决方案2】:
logininfo = {
    fname: document.getElementsByName("firstName").value,
    lname: document.getElementsByName("lastNane").value,
    student: document.getElementsByName("studentn").value,
    password: document.getElementsByName("password2").value
};
localStorage.setItem("login", JSON.stringify(logininfo));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    • 2014-05-05
    • 2016-04-29
    • 2018-08-02
    • 2018-11-05
    • 2023-03-12
    相关资源
    最近更新 更多