Как я могу получить данные из одной html-формы и отобразить их в другой?

#javascript #forms

Вопрос:

Я использую только JS и хочу получить имя пользователя из одного html и отобразить его на другой html-странице. Я новичок в программировании, и у меня есть два вопроса:

  • Могу ли я использовать для этого только один файл JS? Если да, то как?
  • Почему это не работает?

Первая страница

     <main>
        <form action="">
           <input type="text" name="login" id="login" class="login" placeholder="Login">
           <a href="password.html" id='logar'>LOGAR!</a>
        </form>
        <span id='spanlogin'></span>
    </main>
    <script src="main.js"></script>
 
 var login = document.getElementById('login').value;

localStorage.setItem("thelogin", login);
 

Вторая страница

     <main>
        <div>
            <span id='showlogin'></span>
        </div>
        <div class="senha">
        </div>
    </main>
    <script src="second.js"></script>
 
 var ologin = localStorage.getItem('thelogin');

function showthelogin(){
    document.getElementById('showlogin').innerHTML = ologin
}

window.onload = showthelogin()
 

Спасибо за помощь!

Комментарии:

1. традиционно: форма отправляется на сервер, сервер отвечает новой страницей с представленными данными — альтернатива: используйте браузеры localStorage API — хорошо документировано в MDN

2. Спасибо, но как я могу сделать это традиционным способом?

3. вы имеете в виду отправить форму на серверную сторону? отправив форму на сторону сервера, я думаю

Ответ №1:

Как бы то ни было, кнопка входа в систему-это просто ссылка, она не запускает js на первой странице. js выполняется немедленно при загрузке страницы, когда форма все еще пуста. Если вы обернете его в функцию и вызовете функцию по щелчку, она будет делать то, что вы хотите.

То, что вы хотите, может быть не тем, что вам нужно, но заставить вещи делать то, что мы хотим, чтобы они делали, может помочь нам лучше понять, что нам нужно.

main.js

 function savePassword(){
    var login = document.getElementById('login').value;
    localStorage.setItem("thelogin", login);    
}
 

первая страница:

 <a href="password.html" id='logar' onclick="savePassword()">LOGAR!</a>
 

Отвечая на ваш первый вопрос, вы можете сделать это всего на одной странице. Например, прочитайте об одностраничных приложениях.

Обратите внимание, что то, как вы это делаете, не то же самое, что «отправка» формы.

Комментарии:

1. Да, я просто хочу отобразить имя пользователя и перенести пользователя на другую страницу, чтобы ввести пароль, как на странице, которую я копирую. Спасибо за помощь!

Ответ №2:

«Для документов, загруженных из файла: URL-адреса (то есть файлы, открытые в браузере непосредственно из локальной файловой системы пользователя, а не обслуживаемые с веб-сервера), требования к поведению локального хранилища не определены и могут различаться в разных браузерах.

Во всех текущих браузерах localStorage, похоже, возвращает для каждого файла другой объект: URL. Другими словами, каждый файл: URL, по-видимому, имеет свою собственную уникальную локальную область хранения. Но нет никаких гарантий относительно такого поведения, поэтому вам не следует полагаться на него, потому что, как упоминалось выше, требования к URL-адресам file: остаются неопределенными».

Его от developer.mozilla.org/en-US/docs/Web/API/Window/localStorage

Комментарии:

1. О, я использую Opera GX, чтобы проверить это. Может быть, если я перейду на Chrome, это сработает. Спасибо за помощь, я попробую и получу от вас обратную связь.

2. @HugoFolloni, если вы используете веб-сервер, локальное хранилище будет общим. Вместо того, чтобы щелкнуть файл, вы перейдете к localhost:8000/filename.html, то же самое, что и для посещения обычного веб-сайта, за исключением того, что он находится на вашем локальном компьютере. Вот список способов запуска сервера тестирования разработки .

3. Да, я использую опцию Открыть с живым сервером VSCode, которая открывает файл на порту 5500. Но это все равно не работает. :c