Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля

Вывод объектов в компоненте

25.10.2009, 18:03
Гость
Гость

Здравствуйте!

У меня проблема в реализации вывода объектов, никак не могу решить. Ситуация такая: все объекты а компоненте могут принадлежать разным группам, которая выбирается из списка. При выводе нужно сделать эти группы разворачиваемыми по клику.

Мои знания в JS не сильно глубоки, а делать надо. Собственно, понял, что смогу сделать заявленное в случае, если объекты будут выведены примерно так:
Код:
<script type='text/javascript' language='JavaScript'>
function show(ID) {
data = document.getElementById('g' + ID);
data.style.display = data.style.display == "block" ? "none" : "block";
}
</script>
<!-- head -->
<div id="total">
<!-- body -->
<h2 >Group Name <span>#ID <a onClick="show(ID);">показать</a></span></h2>
<div id="gID" style="display: none;">
<p id="gID_oID">Object Name</p>
<p id="gID_oID">Object Name</p>
<p id="gID_oID">Object Name</p>
</div>

<h2 >Group Name <span>#ID <a onClick="show(ID);">показать</a></span></h2>
<div id="gID" style="display: none;">
<p id="gID_oID">Object Name</p>
<p id="gID_oID">Object Name</p>
<p id="gID_oID">Object Name</p>
</div>

<h2 >Group Name <span>#ID <a onClick="show(ID);">показать</a></span></h2>
<div id="gID" style="display: none;">
<p id="gID_oID">Object Name</p>
<p id="gID_oID">Object Name</p>
<p id="gID_oID">Object Name</p>
</div>
<!-- foot -->
</div>

Я разобрался с помощью топика, как сделать вот такой вывод:
Код:

<h2 >Group Name</h2>
<p id="gID_oID">Object Name</p>
<p id="gID_oID">Object Name</p>
<p id="gID_oID">Object Name</p>

<h2 >Group Name</h2>
<p id="gID_oID">Object Name</p>
<p id="gID_oID">Object Name</p>
<p id="gID_oID">Object Name</p>

Но как объекты определенной группы заключить в отдельный контейнер? Это вообще возможно? А может быть у кого-то уже есть решение, для подобной функциональности?
28.10.2009, 11:42
DiGGy
DiGGy
DiGGy

Зарегистрирован:
2005-04-04
Сообщений: 1546

Не уверен, что правильно понял задачу, но из того что понял - попробуйте сделать сортировку в компоненте сначала по группе, а потом по тому полю, которое ща у вас стоит. Далее ставитте условие, если текущая группа изменилась, то и контейнер новый делаете.

Temet nosce...
28.10.2009, 12:45
ktotoff
АльтерЛан

Зарегистрирован:
2006-12-19
Сообщений: 334

Если задача только в том, чтобы показывать - скрывать объекты, то не обязательно засовывать их в контейнер!
Это нетривиальная задача, у меня её так и не получилось красиво решить.

Проще для каждой группы объектов (номер группы - это конкретный $f_list_id) стартовать счётчик и присваивать элементам идентификатор вроде
Код:
<p id="name_".$f_list_id."_".$сounter."">f_Name</p>


Если группы совпадают, счётчик инкрементируется. Если нет - соответственно, стартуется заново.

Тогда в функцию нужно будет добавить for и передавать не только ID, а 2 значения: list_id и максимальный $сounter (количество объектов в группе). Если групп несколько, что ещё и какой-то префикс (name).

При этом уйдёт необходимость в консолидирующих контейнерах для объектов и получится нормальный такой, стандартный аккордеон! улыбка

...жизнь прекрасна, когда правильно подобраны антидепрессанты...
198 196 2009-10-28 12:45:51 9785
Описание проекта