JavaScript在多个页面上与localStorage一起构成

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

关于这个问题,我有两个问题:

1 - 当我做if (nickname in localStorage)它是否有效?因为每次我运行代码都不起作用。

2 - 我正在尝试在多个页面中验证表单,但每次我想保存一个昵称或者保存另一个昵称的地方。我已经尝试添加一个可数变量,但它仍然无效。这样做的最佳方法是什么?

这是我的三种形式中的两种形式的代码:

var k = 0;
function main() {
     var buttonregister = document.getElementById("next");
     var buttonlogin = document.getElementById("nextlogin");
     var buttonsignin = document.getElementById("nextsignin");

     if(buttonregister != null) {
         buttonregister.addEventListener("click", createaccount);
     } else if (buttonlogin != null) {
         buttonlogin.addEventListener("click", submit);
     }
}

function submit() {
    var login = document.login;
    var nickname = login.nickname.value;
    if (nickname in localStorage) {
        alert('The nickname ' + nickname + ' is already in use.');
    } else {
        localStorage.setItem("username"+k, nickname);  
        localStorage.setItem("password"+k, "");
        localStorage.setItem("email"+k, ""); 
        k++;
    }

    login.reset();
}

function createaccount() {
    var register = document.register;
    var nickname = register.nickname.value;
    var password = register.password.value;
    var email = register.email.value;

    if (nickname in localStorage) {
        alert('The nickname ' + nickname + ' is already in use.')
    } else {
        localStorage.setItem("username"+k, nickname);
        localStorage.setItem("password"+k, password);
        localStorage.setItem("email"+k, email);
        k++;
    }

    register.reset();
}

document.addEventListener("DOMContentLoaded", function(event) {main()});
javascript forms
1个回答
1
投票
  1. in运算符返回键,而不是值。所以你问的是localStorage是否包含一个等于nickname中存储的值的键。我不认为这是基于随后的alert()的意图。

此外,您从未设置nickname localStorage属性,因此无论如何测试都没有实际意义。

  1. 基于计数器的索引在这里不一定是好的做法,因为无法保证订单。有很多方法可以解决这个问题。一种简单的方法是使用前缀,例如页面标题,表单名称或类似的东西。
© www.soinside.com 2019 - 2024. All rights reserved.