Древовидный список
Здравствуйте!
Есть готовый скрипт позволяющий организовать древовидную структуру:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<script type="text/javascript">
function tree(lit)
{
var el;
var i = 1;
while (el = document.getElementById(lit + i))
{
if (el.style.display == 'block') el.style.display = 'none';
else el.style.display = 'block';
i++;
}
}
</script>
<style type="text/css"> .h { display:none } </style>
</head>
<body>
<ul class="list">
<li><a href="javascript:void(0);" onclick="tree('q')">Мебель</a></li>
<ul>
<li id="q1" class="h">Деверяшка 1</li>
<li id="q2" class="h">Деверяшка 2</li>
</ul>
<li><a href="javascript:void(0);" onclick="tree('s')">Техника</a>
<ul>
<li id="s1" class="h"><a href="javascript:void(0);" onclick="tree('a')">Ноутбуки</a></li>
<ul>
<li id="a1" class="h">Apple</li>
<li id="a2" class="h">HP</li>
</ul>
<li id="s2" class="h"><a href="javascript:void(0);" onclick="tree('x')">Компьютеры</a>
<ul>
<li id="x1" class="h">Мышки</li>
<li id="x2" class="h">Клавиатуры</li>
</ul>
</li>
<li id="s3" class="h">Что-то еще</li>
</ul>
</li>
</ul>
</body>
</html>
Работает все отлично, но хочу сделать так, чтобы при клике к примеру на "Мебель" при открытом разделе "Техника", "Техника" полностью сворачивалась и открывлся раздел "Мебель". Т.е. чтобы нельзя было все разделы развернуть одновременно :) К сожалению не понимаю как это сделать :( Надеюсь понятно объяснил :) Заранее благодарен за помощь! |
Я бы сделал немного по другому:
id указаля бы для списка вцелом а не для элемнетов списка, тоесть это:
<ul>
<li id="q1" class="h">Деверяшка 1</li>
<li id="q2" class="h">Деверяшка 2</li>
</ul>
заменил на это:
<ul id="q">
<li class="h">Деверяшка 1</li>
<li class="h">Деверяшка 2</li>
</ul>
и указал бы: <ul class="list" id="list"> можно даже в ЦСС переписать из класса на айдишник а перед разворачиванием дерева написал бы такой код:
var i,Items=document.getElementById("list").getElementsByTagName("ul");
for(i=0;i<Items.length;i++) Items.style.display="none";
Ещё вариант, если всегда будет открыто только одна ветка, то можно сохранять её id и потом скрывать её и всех родителей, это будет быстрее выполнятся если список слишком большой будет. |
Спасибо вам большое! :)
|
| Часовой пояс GMT +3, время: 02:27. |