JavaScript создается с помощью localStorage на нескольких страницах - PullRequest
0 голосов
/ 12 мая 2018

У меня есть два вопроса относительно этой проблемы, которые у меня возникают:

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()});

1 Ответ

0 голосов
/ 12 мая 2018
  1. Оператор in возвращает ключ, а не значение. Таким образом, вы спрашиваете, содержит ли localStorage ключ, равный значению, хранимому в nickname. Я не думаю, что это ваше намерение, основанное на последующем alert().

Кроме того, вы никогда не устанавливаете свойство nickname localStorage, поэтому тест в любом случае является спорным.

  1. Индексирование на основе счетчика не обязательно является хорошей практикой, поскольку порядок не может быть гарантирован. Есть много способов решить эту проблему. Одним простым способом было бы использовать префикс, такой как заголовок страницы, имя формы или что-то подобное.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...