jQuery + localStorage - JSON проверка значения true или false - PullRequest
2 голосов
/ 21 июня 2020

Мы сохраняем значение в localstorage с именем ключа - cookiesettings. Значение будет в формате JSON, как показано ниже.

{
   "enabled":true,
   "element1":{
      "enabled":true
   },
   "element2":{
      "enabled":true
   },
   "element3":{
      "enabled":false
   }
}

Не уверен, как извлечь и проверить, включен ли element3 true / false. Если это правда, нам нужно показать div. в противном случае скрыть div.

пытался использовать

localStorage.getItem('cookiesetting');
localStorage.getItem('cookiesetting.element3.enabled');

, но получаю неопределенную ошибку. Пытался использовать:

JSON.parse(localStorage.getItem('cookiesetting'));

По-прежнему не могу найти решение, чтобы проверить, включен ли element3 - Enabled - True или False.

Ответы [ 2 ]

3 голосов
/ 21 июня 2020

Ознакомьтесь с этой документацией, в которой говорится, что ключ и значение должны быть String.

https://developer.mozilla.org/en-US/docs/Web/API/Storage/setItem

Таким образом, вы должны сохранить его строковую версию объекта.

localStorage.setItem('cookiesetting', JSON.stringify({
  "enabled":true,
  "element1":{
    "enabled":true
  },
  "element2":{
    "enabled":true
  },
  "element3":{
    "enabled":false
  }
}))

Вы можете получить Предмет по:

JSON.parse(localStorage.getItem('cookiesetting'))
JSON.parse(localStorage.getItem('cookiesetting')).element3.enabled

Дайте мне знать, если у вас возникнут вопросы.

0 голосов
/ 21 июня 2020

localStorage не может хранить объекты, вам нужно сохранить JSON в виде строки, поэтому преобразуйте cookieObject в строку перед сохранением в localStorage

localStorage.setItem('cookiesetting', JSON.stringify(cookieItem));

Получите строка из localStorage, проанализируйте ее и используйте, как показано ниже

    let cookiesetting = JSON.parse(localStorage.getItem('cookiesetting'));
    if (!!cookiesetting) {
      console.log(cookiesetting.element3.enabled);
    }

let cookieItem = {
  "enabled": true,
  "element1": {
    "enabled": true
  },
  "element2": {
    "enabled": true
  },
  "element3": {
    "enabled": false
  }
};

localStorage.setItem('cookiesetting', JSON.stringify(cookieItem));
let cookiesetting = JSON.parse(localStorage.getItem('cookiesetting'));
if (!!cookiesetting) {
  console.log(cookiesetting.element3.enabled);
}
...