Хранение переменной сеанса в Javascript - PullRequest
0 голосов
/ 06 февраля 2020

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

sessionStorage.color_array = generateColorsForKidList();
if (!sessionStorage.color_array) {
 sessionStorage.color_array = generateColorsForKidList();
}

function generateColorsForKidList() {
//code
color_array.push({
  color: getRandomColor(),
  kid: kid,
});
return color_array;
}

function fillExamKiddata(exams, currentMonth, currentYear) {
//code
var color_array = sessionStorage.color_array;
var exams = $('.exam_event');
exams.each(function(index) {
 for (var k = 0; k < color_array.length; k++) {
  if ($(this).find('small').eq(3).text().trim() == color_array[k]['kid'].trim()) {
//giving index error
}

Ошибка:

enter image description here

Я использовал функции sessionStorage.getItem () и sessionStorage.setItem (), но результат тот же. Любая идея, если я неправильно использую значения сеанса?

Спасибо за чтение!

Редактировать: Содержимое generateColorsForKidList () enter image description here

1 Ответ

0 голосов
/ 06 февраля 2020

sessionStorage.color_array = generateColorsForKidList(); изменить на

sessionStorage.color_array = JSON.stringify(generateColorsForKidList());

Стрифицировать значения при сохранении.

var color_array = sessionStorage.color_array; изменить на

var color_array = JSON.parse(sessionStorage.color_array);

Перед использованием проанализировать значения.

Пример кода

const colors = [
  { color: "#a", kid: "abc" },
  { color: "#b", kid: "xyz" }
];

const setSS = (arr, name) =>
  window.sessionStorage.setItem(name, JSON.stringify(arr));
const getSS = name => JSON.parse(window.sessionStorage.getItem(name));

console.log(colors);
setSS(colors, "my_colors");
const color_array = getSS("my_colors");

for (var k = 0; k < color_array.length; k++) {
  console.log(color_array[k]["kid"].trim());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...