JavaScript

Не получается задать value для input

Не получается задать value по умолчанию.
Есть код, который при первом вводе в input записывает value в local storage. Затем должен В любую другую форму подставлять это значение автоматически
вот код сохранения, он работает нормально, значение сохраняется в local storage один раз и больше не перезаписывается.
 if (localStorage.getItem('userName') === null) { 
userName = document.querySelector("#user-name").value;
localStorage.setItem('userName', userName);
};
А вот код вставки значения, и он не работает, значение просто не вставляется
 if (localStorage.getItem('userName') != null) { 
document.querySelector("#user-name").value = userName;
}
в
Предоставленный вами код для сохранения значения в локальном хранилище выглядит правильно, он проверяет, отсутствует ли элемент «userName» в локальном хранилище, и если это не так, он сохраняет значение ввода с идентификатором «имя пользователя» в локальном хранилище с помощью ключа 'userName'.

Однако предоставленный вами код для вставки значения из локального хранилища во входные данные не работает, поскольку он перезаписывает переменную «имя_пользователя» значением из локального хранилища. Вместо ссылки на переменную она должна ссылаться на значение, хранящееся в локальном хранилище.

Вот пример решения проблемы:
if (localStorage.getItem('userName') != null) {
document.querySelector("#user-name").value = localStorage.getItem('userName');
}
Кроме того, было бы лучше добавить прослушиватель событий, чтобы определить, когда страница была загружена, а затем получить значение, например:
window.addEventListener("load", function() {
if (localStorage.getItem('userName') != null) {
document.querySelector("#user-name").value = localStorage.getItem('userName');
}
})
Таким образом, значение будет вставлено во ввод после завершения загрузки страницы и инициализации всех элементов.

Другой альтернативой является использование sessionStorage вместо localstorage, в котором будут храниться данные только для одного сеанса браузера, а данные удаляются при закрытии окна браузера.

Стоит отметить, что разные веб-браузеры имеют разные настройки файлов cookie и хранилища, а некоторые из них могут иметь разный максимальный размер хранилища. Также важно помнить, что данные, хранящиеся в LocalStorage или SessionStorage, доступны для любого кода JavaScript, работающего на вашем веб-сайте, поэтому их нельзя использовать для хранения конфиденциальной информации.
Импульс Импульс
Импульс Импульс
1 711
Лучший ответ
Максим Клочко Спасибо за развернутый ответ!
 if (localStorage.getItem('userName') != null) {
document.querySelector("#user-name").value = localStorage.getItem('userName');
}
Ты забыл сохранить значение которое получил из localStorage.
 userName = localStorage.getItem('userName');
if (userName) {
document.querySelector("#user-name").value = userName;
}
Это раз.
Ты не показал код обработчика событий на 'input'. Если ты этого не сделал и просто написал так как ты показал, то в localStorage у тебя будет всегда записываться пустая строка.
Это два.
:)
Максим Клочко Этот код запускается при проверке всех ответов в тесте. Только сейчас вот я понял, что если пользователь проигнорирует этот инпут то запишется пустая строка. Каким образом я могу сделать его обязательным?
Максим Клочко Все, нашел
Если вместо переменной написать значение, которое ты туда записал, в конце у тебя получается вот это:
 document.querySelector("#user-name").value = document.querySelector("#user-name").value 
))
Максим Клочко Смысл понял, но не понимаю почему это так работает. Я ведь записал в переменную значение равное value, а потом уже по дефолту value равно этой переменной