Почему моя переменная localStorage.getItem возвращает «объект HTMLSpanElement»? - PullRequest
1 голос
/ 10 апреля 2019

У меня есть скрипт в хорошем рабочем состоянии, который проверяет, был ли посетителю назначен код купона, но он хотел добавить функцию, которая получает код купона, который ему был присвоен, и отображает его.Оба полагаются на свойство localStorage .Проблема, с которой я сталкиваюсь, заключается в том, что когда я отображаю сохраненное значение, оно возвращает [object HTMLSpanElement] вместо значения, которое должно быть назначено.

Практически все, что я нашел по этой проблеме, связано с областью видимости, но я не понимаю, как возникла проблема с областью видимости ... даже пытался сделать переменные глобальными в области видимости, и это не выгляделоделать что-либо.

Вот JS:

if(localStorage.getItem("visited") != "true"){
    localStorage.setItem("visited","true"); 
    var codeValue = document.getElementById("code");
    localStorage.setItem("code",codeValue);
} 
else { 
    var savedCode = localStorage.getItem("code");
    document.getElementById("message").innerHTML = "You've already been assigned coupon code " + savedCode;
}

Вот соответствующий HTML:

<span id="message">Your coupon code is: <span id="code">CODE1234</span></span>

Когда вы вернетесь на страницу после ее посещения, я ожидаю промежутоктекст для отображения You've already been assigned coupon code CODE1234, но вместо этого он возвращает You've already been assigned coupon code [object HTMLSpanElement]

Обратите внимание, что часть сценария была чем-то, что я создал ранее и запустил в производство, и я в основном использую эту функциональность.Ранее, если getItem("visited") != "true" возвращало значение false, оно отображало окно с предупреждением и сообщало, что вам уже присвоен код, а затем перенаправляло вас на другую страницу.

Ответы [ 2 ]

5 голосов
/ 10 апреля 2019

Вы храните сам элемент (который является объектом) в localStorage .Вы должны сохранить текст элемента.

Изменить

var codeValue = document.getElementById("code");

на

var codeValue = document.getElementById("code").textContent;

Обратите внимание: Согласно Окно.localStorage

Ключи и значения всегда являются строками (обратите внимание, что, как и в случае объектов, целочисленные ключи будут автоматически преобразованы в строки).

0 голосов
/ 10 апреля 2019

вам нужен доступ к тексту внутри элемента, здесь вы храните html-элемент внутри localalstorage. изменить код для доступа к тексту

document.getElementById('code').innerText
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...