Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Сохранить вложенный список (https://javascript.ru/forum/dom-window/40417-sokhranit-vlozhennyjj-spisok.html)

kuznetsov131 04.08.2013 19:51

Сохранить вложенный список
 
Доброго времени суток. Есть следующая задача, хранить в куках вложенный список. С обычным (без вложений) проблем не возникает, но вот как работать с вложенным пока не знаю. Очень прошу помощи.
Пример списка:
<ul id="list">
<li>3rd floor</li>
<li>2nd floor
<ul>
<li>3.1 floor</li>
<li>2.1 floor</li>
<li>1.1 floor</li>
</ul>
</li>
<li>1st floor</li>
</ul>

mta88 04.08.2013 20:17

Цитата:

С обычным (без вложений) проблем не возникает, но вот как работать с вложенным пока не знаю
а как вы сохраняете обычный список, что не можете сохранить вложенный?
это задачи одинаковой сложности

и что на самом деле значит "сохранить список"? список чего?

kuznetsov131 04.08.2013 20:23

Сохраняю вот так
saveList: function() {
var listObject = {};
var str = ' ';
for (var count = 0; count < list.children.length; count++ ) {
listObject.pos = count;
listObject.val = list.children[count].innerHTML;
str += JSON.stringify(listObject);
}
setCookie('list', str, 1);
}
Потом когда достаю из кук список, разбиваю Split`ом, создаю объект через JSON.parse и потом создаю список

kuznetsov131 04.08.2013 20:25

Ну и в принципе вопрос можно поставить немного иначе. Как сохранить, список в куки, а потом восстановить список из кук

kuznetsov131 04.08.2013 20:38

Цитата:

Сообщение от mta88 (Сообщение 265821)
и что на самом деле значит "сохранить список"? список чего?

Пример списка я привел, это обычный HTML список с произвольным текстом. Суть в том, что каждый пользователь может изменять список (добавлять элементы, удалять, изменять). Вот это все и нужно хранить в куках, что бы пользователю загружался именно его список, а не дефолтный.
Не могу понять как правильно обрабатывать детей (вложенный список). При сохранении JSON выглядит так:
{"pos":0,"val":"3rd floor\n
\n
3.1 floor
\n
2.1 floor
\n
1.1 floor
\n
\n "}{"pos":1,"val":"2nd floor"}{"pos":2,"val":"1st floor"}
И восстановить список из этого JSON не получается. Я понимаю, что делаю что то не так, возможно в корне неправильно подошел к решению задачи. Поэтому и спрашиваю

kuznetsov131 04.08.2013 21:15

Сори, проверил - сохраняет нормально. Извиняюсь за беспокойство

mta88 05.08.2013 05:43

вот оно как
логичнее кодировать список (либо его упрощенное представление) целиком в JSON, а не его куски -- тогда и будет "та же самая сложность", как я обещал
var list = [1,2,3,[4,5],7,8,[9,10,11]];
var list_cookie = JSON.strinify(list);
var list2 = JSON.parse(list_cookie);


но если в результате будут символы ';' и '=', они могут сломать cookie -- их надо как-то экранировать либо весь результат закодировать в base64

а вообще я бы хранил такие большие структуры на сервере, но вам виднее


Часовой пояс GMT +3, время: 21:20.