|
|
|
| Как отобразить дерево папок в такой последовательности:
1) Сначала выводятся папки корневой директории
2) Если в папке есть подпапки, слева ставится значок +
2) Выбираешь, например, папку со значком +, кликаешь на ней, она открывается уже под выбранной нами папкой). Как в проводнике Windows, одним словом.
Используя функцию, могу вывести список ВСЕХ папок в виде дерева. Но как вывести их поочередно? | |
|
|
|
|
|
|
|
для: FiX
(24.04.2007 в 14:15)
| | Неужели никто не делал подобных проектов? Хотя бы подскажите, пожалуйста, каким образом можно это осуществить. | |
|
|
|
|
|
|
|
для: FiX
(25.04.2007 в 13:53)
| | Если речь идет о появлении без перезагрузки страницы, то вариантов тока два:
- грузить все дерево с учетом дочерних конструкций, которые помещать в отдельные слои и через JS их показывать/скрывать при нажатии на "+"
- копать в сторону AJAX | |
|
|
|
|
|
|
|
для: FiX
(24.04.2007 в 14:15)
| | Держи.
Быстро перебрал один старый скрипт. При клике на элемент меню оно выпадает. Всякие плюсики и др. приделаешь сам.
<head>
<script>
function clickHandler() {
var targetId, srcElement, targetElement;
srcElement = window.event.srcElement;
if (srcElement.className == 'menu_expand' || srcElement.className == 'menuvoid') {
targetId = srcElement.id + 'dtls';
targetElement = document.all(targetId);
if (targetElement.style.display == 'none') {
targetElement.style.display = '';
} else {
targetElement.style.display = 'none';
}
}
}
document.onclick = clickHandler;
</script>
</head>
<body>
<?php
function menu_output($tree, $parent="menu", $level=1) {
$counter=1;
$depth=""; for($i=1; $i<$level; $i++) $depth.="--";
foreach($tree as $value=>$state) {
$prefix = $parent."_".$counter;
if( is_array($state) ) { //this is a dir
echo "<div id=$prefix class=menu_expand title='Выпадающее меню'>$depth $value</div>\n";
echo "<div id=".$prefix."dtls style='display:none' align=left>\n";
menu_output($state, $prefix, $level+1);
echo "</div></td></tr>\n";
} else { //this is a file
echo "$depth $value</a><br>\n";
}
$counter++;
}
}
$tree = array('dir1'=>array('file1'=>'file', 'file2'=>'file'), 'dir2'=>array('dir2.1'=>array('file2.1'=>'file', 'file2.2'=>'file'), 'file1'=>'file', 'file2'=>'file'), 'file1'=>'file');
echo "<pre>"; print_r($tree); echo "</pre>";
menu_output($tree);
?>
</body>
|
| |
|
|
|