|
|
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
Зарегистрирован: 2005-04-04
Сообщений: 1546
|
Не уверен, что правильно понял задачу, но из того что понял - попробуйте сделать сортировку в компоненте сначала по группе, а потом по тому полю, которое ща у вас стоит. Далее ставитте условие, если текущая группа изменилась, то и контейнер новый делаете.
Temet nosce...
|
|
|
28.10.2009, 12:45
|
|
ktotoff
АльтерЛан
Зарегистрирован: 2006-12-19
Сообщений: 339
|
Если задача только в том, чтобы показывать - скрывать объекты, то не обязательно засовывать их в контейнер!
Это нетривиальная задача, у меня её так и не получилось красиво решить.
Проще для каждой группы объектов (номер группы - это конкретный $f_list_id) стартовать счётчик и присваивать элементам идентификатор вроде Код:<p id="name_".$f_list_id."_".$сounter."">f_Name</p>
Если группы совпадают, счётчик инкрементируется. Если нет - соответственно, стартуется заново.
Тогда в функцию нужно будет добавить for и передавать не только ID, а 2 значения: list_id и максимальный $сounter (количество объектов в группе). Если групп несколько, что ещё и какой-то префикс (name).
При этом уйдёт необходимость в консолидирующих контейнерах для объектов и получится нормальный такой, стандартный аккордеон!
...жизнь прекрасна, когда правильно подобраны антидепрессанты...
|