Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
 Аватар для SerVB
30 / 5 / 3
Регистрация: 16.05.2015
Сообщений: 145

Запись id видимых элементов в cookie

29.06.2015, 12:24. Показов 1756. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На странице есть несколько элементов (id 2..9999), рядом с каждым есть кнопка показать/спрятать элемент. Мне нужен код, который будет записывать в куки id элементов (например, всех видимых), а также код, который при перезагрузке страницы [читай - при открытии] будет заново по куки открывать все открытые в прошлый раз элементы.

HTML5
1
2
<a href="javascript:flipflop('3');" id='a3'>[+]</a>
<div id='3' style='display: none;'>3</div>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
function flipflop( id ) {
    element = document.getElementById( id );
    if( element )
    element.style.display = element.style.display == "none" ? "" : "none";
 
    element = document.getElementById("a" + id);
    if( element ) {
        if(element.innerHTML == "[+]") element.innerHTML="[-]";
        else element.innerHTML="[+]";
    }
}
Мне не понятно, каким способом хранить в куки информацию, ведь каждая ограничена в 4 кб
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.06.2015, 12:24
Ответы с готовыми решениями:

Получение списка видимых элементов из TreeView
Существует некий TreeView с привязанными элементами. Возможно ли получить список элементов из данной коллекции, видимых пользователю? Если...

Узнать количество видимых элементов в блоке
Есть код: &lt;ul id=&quot;carusel&quot;&gt; &lt;li&gt;&lt;/li&gt; &lt;li&gt;&lt;/li&gt; &lt;li&gt;&lt;/li&gt; &lt;li&gt;&lt;/li&gt; &lt;li&gt;&lt;/li&gt; &lt;/ul&gt; теги &lt;li&gt; могут принимать значения...

Запись cookie
Можно ли записать несколько кукисов. если да то как? Буду благодарен! Добавлено через 8 минут то есть что бы каждая страница...

8
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
29.06.2015, 12:55
например, строка из четырёх тысяч единиц и нулей однозначно покажет состояние видимости четырёх тысяч тегов (1 - виден, 0 - не виден)

или хотите сказать, что у вас на странице больше четырёх тысяч тегов (и около каждого имеется кнопка)?

это тогда не HTML-страница, этот бред надо как-то по-иному называть
0
 Аватар для SerVB
30 / 5 / 3
Регистрация: 16.05.2015
Сообщений: 145
29.06.2015, 13:01  [ТС]
kalabuni,
Точно, у меня ж все по порядку идет, можно и 1/0 записывать...

Но тут соль в том, что есть невидимые элементы внутри других невидимых - типа иерархия, как папки.
Так что возможно будет больше 4000 элементов
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
29.06.2015, 13:06
Цитата Сообщение от SerVB Посмотреть сообщение
Но тут соль в том, что есть невидимые элементы внутри других невидимых - типа иерархия, как папки.
Так что возможно будет больше 4000 элементов
смешно... это как сказать - "в кошельке у меня 4000 рублей, но так как купюры разложены по разным отделениям, то общая сумма, возможно, не 4000 рублей, а больше"
0
 Аватар для SerVB
30 / 5 / 3
Регистрация: 16.05.2015
Сообщений: 145
29.06.2015, 13:07  [ТС]
kalabuni,
...

http://2.bp.blogspot.com/-A_lI... img435.jpg как содержание. Не будет больше 4к элементов что ли?
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
29.06.2015, 13:16
Лучший ответ Сообщение было отмечено SerVB как решение

Решение

Цитата Сообщение от SerVB Посмотреть сообщение
Не будет больше 4к элементов
ну, значит, и проблем нет --- лепите нули с единицами подряд, вне зависимости от того - в папке иконка, или вне папки

на всякий случай сообщаю, что в local storage (которое можно использовать вместо кук) верхний предел - 5 миллионов нулей и единиц... так что по-любому уложитесь
1
 Аватар для SerVB
30 / 5 / 3
Регистрация: 16.05.2015
Сообщений: 145
29.06.2015, 13:48  [ТС]
kalabuni,
Спасибо, уяснил. 5 миллионов - вот что мне нужно!
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
30.06.2015, 11:36
kalabuni, кстати его использовать удобнее, почему-то)))
0
 Аватар для SerVB
30 / 5 / 3
Регистрация: 16.05.2015
Сообщений: 145
30.06.2015, 13:29  [ТС]
Вот мое кривое решение:

JavaScript
1
2
3
4
5
6
7
8
9
10
// Открывает содержание по истории
function returnCond() {
    var cond = getCookie("cond");
    for (var i=0; i<=cond.length; i++) {
        if(cond[i]==1) {
            openall(i+1,i+1);
            
        }
    }
}

Тут контрольная сумма - div с текстом. Этот текст и есть кс
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Если контрольная сумма содержания изменилась - удаляет состояние содержания и меняет контрольную сумму на текущую
function newList() {
    var cursum = findIDbyName("_summ");
    var lastsum = getCookie("summ");
    if(cursum != lastsum) {
        deleteCookie("cond");
        setCookie("summ", cursum);
        var newCond = "1";
        var num = findIDbyName("_num");
        alert(num);
        for(var i=1; i<num; i++) {
            newCond += "0";
        }
        setCookie("cond", newCond);
    }
}
А вот и кнопки +/-:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// Открывает если закрыт, закрывает если открыт
function flipflop( id ) {
    element = document.getElementById( id );
    if(element.style.display == "none") var i = 0;
    else var i = 1;
    
    element = document.getElementById("a" + id);
    if( element ) {
        if(i == 1) closeall(id,id);
        else openall(id,id);
    }
}
 
// Открывает все с first по last
function openall(first,last) {
    var cond = "" + getCookie("cond");
    var cond2 = [];
    for(var i=0; i<cond.length; i++) {cond2[i]=cond[i] + "";}
    
    for(var i=first; i<=last; i++) {
        element = document.getElementById( i );
        element.style.display = "list-item";
        
        element = document.getElementById("a" + i);
        element.innerHTML="[−]";
        
        cond2[i-1]=1;
    }
    
    var newCond = "";
    for(var i = 0; i<cond.length; i++) {newCond+=cond2[i]};
    setCookie("cond",newCond);
}
 
// Закрывает все с first по last
function closeall(first,last) {
    var cond = "" + getCookie("cond");
    var cond2 = [];
    for(var i=0; i<cond.length; i++) {cond2[i]=cond[i] + "";}
    
    for(i=first; i<=last; i++) {
        element = document.getElementById( i );
        element.style.display = "none";
        
        element = document.getElementById("a" + i);
        element.innerHTML="[+]";
        
        cond2[i-1]=0;
    }
    
    var newCond = "";
    for(var i = 0; i<cond.length; i++) {newCond+=cond2[i]};
    setCookie("cond",newCond);
}
Фунуции setCookie, deleteCookie, getCookie есть в инете
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.06.2015, 13:29
Помогаю со студенческими работами здесь

Запись IP в Cookie
Как определить локальный IP и записать его в куки? Вот так не получается: var ip = location.host; ...

cookie запись и отправка
Всем привет! Требуется выполнить два запроса. При осуществлении первого запроса сервер создает куки, которые нужно использовать во...

Запись данных в cookie
Здравствуйте.Есть такой скрипт.Хочу чтобы при обновлении страницы значения оставались.Помогите кто разбирается.Весь день сидел и не...

Запись в cookie на javascript
Здравствуйте ребята! Помогите разобраться с такой темой, как записать информацию в куки пользователя с помощью javascript? А ситуация...

Запись Cookie и доступ к ним
Записываю Cookie вот так: setcookie(&quot;id&quot;, $myrow, time()+3600); setcookie(&quot;login&quot;, $myrow, time()+3600); Хочу их вывести на другой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru