Попытка создать персонализированное приветствие с помощью JavaScript

#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