#javascript #if-statement #session-storage
#javascript #if-statement #сеанс-хранилище
Вопрос:
Ну, для веб-сайта я сделал небольшой скрипт, который при загрузке сайта выдает запрос с запросом вашего имени, а когда вы отправляете его, в заголовке отображается приветственное сообщение.
Проблема в том, что когда вы переходите на разные страницы веб-сайта, скрипт выполняется снова и снова запрашивает имя. Например, вы переходите из дома в раздел контактов, и когда раздел контактов загружается, приглашение появляется снова. Я хочу, чтобы это выполнялось один раз и отображало информацию по всему веб-сайту. Вот код JS:
var nombre = sessionStorage.setItem[prompt("Bienvenido a Plantas All the Time, ingrese su nombre:")]
var login = sessionStorage.getItem(nombre);
if (nombre == "") {
prompt("Bienvenido a Plantas All The Time, ingrese su nombre:")
} else {
document.getElementById('usuario').innerHTML = "<h4> Hola, " nombre "</h4>";
}
Всякий раз, когда я выполняю это, появляется подсказка, я ввожу имя, и оно печатает «undefined».
Комментарии:
1.
setItem
это метод, поэтому передаваемый вами параметр должен быть в круглых скобках, а не в скобках. Напримерvar nobre = sessionStorage.setItem(prompt(.....))
.
Ответ №1:
Здесь много крошечных ошибок.
setItem
принимает в качестве параметра ключ и значение, в то времяgetItem
как принимает ключ (как строку); думайте о sessionStore как о словаре / карте; Таким образом, вам нужно указать имя, в котором вы храните ключ, например"name-key"
;- по логике, вы не должны вызывать
setItem
его каждый раз при загрузке страницы, но только в том случае, если пользователь его еще не предоставил;
Таким образом, идея состоит в том, чтобы сначала проверить хранилище, а затем, если имя не задано, запросить его у пользователя.
Вот рабочий пример:
var key = "name-key"; // key used to store the name in the sessionStorage
// first, try to retrieve the name
var name = sessionStorage.getItem(key);
if(!name){ // if no name has been provided yet
// ask the user, and keep asking until it enters a value
while (!name) {
name = prompt("Bienvenido a Plantas All The Time, ingrese su nombre:");
}
// store the name in storage, so next time no prompt will be necessary
sessionStorage.setItem(key, name);
}
// at this point, name is set, so you can great your user
document.getElementById('usuario').innerHTML = "<h4> Hola, " name "</h4>";
Комментарии:
1. @mbojko хороший улов, запутался с
nombre
here (номер на французском), спасибо за редактирование!2. Спасибо, ребята!! по какой-то причине он не работает, приглашение не отображается и выводит только null