Javascript - сохранить только часть входного значения в localStorage - PullRequest
0 голосов
/ 06 октября 2018

У меня есть страница, на которой у пользователя спрашивают его имя, и он должен будет ввести его в текстовое поле.

Я хочу, чтобы он мог набрать полное предложение типа «меня зовут Джон Доу» именя встретили с чем-то вроде «Здравствуйте, Джон Доу. Добро пожаловать на эту страницу».

Мне удалось добиться этого, игнорируя словосочетания из ввода, такие как «меня зовут», «Я есть» и «Я«м».Скорее всего, оставшимися входными данными будет имя пользователя.

Теперь у меня вопрос: как сохранить имя пользователя в localStorage, чтобы использовать его позже, на другой странице?Я не могу сохранить все, что вводит пользователь.Это дало бы мне что-то вроде «Добро пожаловать, меня зовут Джон Доу».

Я хочу сохранить только те слова, которые остались после замен.

Вот что у меня есть:

function myFunction() {
            var text;
            var answers = document.getElementById("userInput").value.toLowerCase();
            answers = answers.replace(/[^a-z0-9' ]/g, "");
            answers = answers.replace("my name is", "");
            answers = answers.replace("i am", "");
            answers = answers.replace("i'm", "");
            switch (answers) {
                case "":
                    text = "Please tell me your name.";
                    break;
                default:
                    text = "Hello, " + CapitalizeName(answers) + ". Welcome to this page.";
            }
            document.getElementById("greeting").innerHTML = text;
            document.getElementById("userInput").value = "";
            localStorage.setItem("userName", CapitalizeName(answers));
        }

        function CapitalizeName(name) {
            let _array = name.split(" ");
            let n_array = [];
            _array.map(w => {
                w = w.charAt(0).toUpperCase() + w.slice(1);
                n_array.push(w);
            });
            return n_array.join(" ");
        }
<p>What is your name?</p>
    <input id="userInput" type="text" spellcheck="false" autofocus onKeyDown="if(event.keyCode==13) myFunction();">
    <p id="greeting"></p>

На второй странице у меня есть это:

localStorage.getItem("userName");

document.getElementById("helloUser").innerHTML = "Welcome back " + userName + "!";
<p id="helloUser"></p>

Я предполагаю, что я не сохраняю это правильно.Я пытался найти решения в Интернете, но не могу найти что-то конкретное.

1 Ответ

0 голосов
/ 06 октября 2018

Следующее будет работать на весь ваш домен.

Обратите внимание, что в данном примере это не делается по соображениям безопасности (заблокировано).

data.onchange = (function(){
  localStorage.setItem("userName", data.value)
})
var userName = localStorage.getItem("userName");

document.getElementById("helloUser").innerHTML = "Welcome back " + userName + "!";
<input id="data">
<p id="helloUser"></p>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...