Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (JS) Как построить DHTML-дерево с помощью таблицы? / 10 сообщений из 10, страница 1 из 1
03.11.2005, 12:53
    #33359886
Berkut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Как построить DHTML-дерево с помощью таблицы?
Требование, чтобы построить дерево именно с помощью таблицы обязательное. Второй день не могу найти решение проблемы :(.
Пока вся загвоздка в рекурсии .
В интернете видел решения только с помощью слоев или списков. Один раз наткнулся на битую ссылку "Делаем дерево при помощи таблиц" на dhtml.ru.

На данный момент раскрытие веток работает корректно, но сворачивание - нет, т.к. необходимо рекурсивно в обратном порядке скрывать строки таблицы, что в свою очередь не работает (см. выше).

Заранее спасибо.
...
Рейтинг: 0 / 0
03.11.2005, 16:03
    #33360601
Berkut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Как построить DHTML-дерево с помощью таблицы?
Выкладываю тестовый скрипт на всеобщее обозрение и критику:

Код: plaintext
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.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
<HTML>
<HEAD>
<title>DHTML tree demo</title>
<SCRIPT language="JavaScript">

var tree = new Array();

tree[ 0 ] =  0 ;
tree[ 1 ] =  0 ;
tree[ 2 ] =  1 ;
tree[ 3 ] =  2 ;
tree[ 4 ] =  2 ;
tree[ 5 ] =  1 ;
tree[ 6 ] =  1 ;
tree[ 7 ] =  6 ;
tree[ 8 ] =  6 ;

function expandOrCollapse(id)
{
    for(i= 0 ; i<tree.length; i++)
    {
        if (tree[i]==id)
        {
            if (document.all('id'+i).style.display=='block')
            {
                collapse_div(i);
                document.all('id'+i).style.display = 'none';
                document.images['img'+id].src = 'plus.gif';
            }
            else
            {
                document.all('id'+i).style.display = 'block';
                document.images['img'+id].src = 'minus.gif';
            }
        }
    }
}

function collapse_div(id)
{
    var i;
    
    for(i= 0 ; i<tree.length; i++)
    {
        if (tree[i]==id)
        {
            collapse_div(i);
            
            document.all('id'+i).style.display = 'none';
            document.images['img'+id].src = 'plus.gif';
        }
    }
}
</SCRIPT>
</HEAD>
<BODY>
<table id="treeTable" cellspacing="1" cellpadding="5" border="0" bgcolor="c0c0c0">
<tr bgcolor="#e1e1e1">
    <td colspan="2">Дерево</td>
    <td>Опции</td>
</tr>
<tr bgcolor="white" id="id1" style="display: block;">
    <td><img id='img1' src="plus.gif" border= 0  onclick="str=''; expandOrCollapse(1)">
    <td>Корень</td>
    <td>edit | delete </td>
</tr>

<tr bgcolor="white" id="id2" style="display: none;">
    <td style="padding-left:15;"><img id='img2' src="plus.gif" border= 0  onclick="str=''; expandOrCollapse(2)">
    <td style="padding-left:15;">уровень  1 . 1 </td>
    <td>edit | delete</td>
</tr>

<tr bgcolor="white" id="id3" style="display: none;">
    <td style="padding-left:30;"><img src="arrow.gif" border= 0 >
    <td style="padding-left:30;">уровень  1 . 1 . 1 </td>
    <td>edit | delete</td>
</tr>
<tr bgcolor="white" id="id4" style="display: none;">
    <td style="padding-left:30;"><img src="arrow.gif" border= 0 >
    <td style="padding-left:30;">уровень  1 . 1 . 2 </td>
    <td>edit | delete</td>
</tr>

<tr bgcolor="white" id="id5" style="display: none;">
    <td style="padding-left:15;"><img src="arrow.gif" border= 0 >
    <td style="padding-left:15;">уровень  1 . 2 </td>
    <td>edit | delete</td>
</tr>
<tr bgcolor="white" id="id6" style="display: none;" onclick="str=''; expandOrCollapse(6)">
    <td style="padding-left:15;"><img id='img6' src="plus.gif" border= 0 >
    <td style="padding-left:15;">уровень  1 . 3 </td>
    <td>edit | delete</td>
</tr>
<tr bgcolor="white" id="id7" style="display: none;">
    <td style="padding-left:30;"><img src="arrow.gif" border= 0 >
    <td style="padding-left:30;">уровень  1 . 3 . 1 </td>
    <td>edit | delete</td>
</tr>
<tr bgcolor="white" id="id8" style="display: none;">
    <td style="padding-left:30;"><img src="arrow.gif" border= 0 >
    <td style="padding-left:30;">уровень  1 . 3 . 2 </td>
    <td>edit | delete</td>
</tr>
</table>
</BODY>
</HTML>
...
Рейтинг: 0 / 0
03.11.2005, 17:27
    #33360869
4m@t!c
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Как построить DHTML-дерево с помощью таблицы?
Я как раз сейчас тоже занимаюсь отображением деревьев, но у меня получается таблица в таблице, а не добавление строк..
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
03.11.2005, 17:31
    #33360883
Berkut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Как построить DHTML-дерево с помощью таблицы?
4m@t!cЯ как раз сейчас тоже занимаюсь отображением деревьев, но у меня получается таблица в таблице, а не добавление строк..
----------------------------------------
Артисты не приехали, приехали цыганеВозможно данный вариант подойдет. :)
4m@t!c , если будут предложения по улучшению, то выложи сюда потом. :)
...
Рейтинг: 0 / 0
03.11.2005, 20:17
    #33361194
4m@t!c
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Как построить DHTML-дерево с помощью таблицы?
Berkut
4m@t!c , если будут предложения по улучшению, то выложи сюда потом. :)
У меня задача следующая. Ветки не должны быть ссылками, ссылками должна быть исключительно листва. кол-во уровней в кадой ветке свое.
Ясное дело, что красоту навести надобно. Для наведения марафета вместо "|" можно воспользоваться какой-нить картинкой и вымостить ячейки дугами.
Вообщем, без притензий на догму, но вот, что на данный момент имеем. Прошу прощения за большой скрипт, "выкусывал" из проекта.
Код: plaintext
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.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
<HTML>
<HEAD>
<TITLE>Устройство автомобиля</TITLE>
</HEAD>
	<BODY>
	<SCRIPT LANGUAGE="JavaScript">
	<!--
	function treeExpand(objId)
	{
		obj = document.getElementById(objId);
		children = obj.nextSibling;
		if(obj.firstChild.innerHTML == '-')
			obj.firstChild.innerHTML='+';
		else
			obj.firstChild.innerHTML='-';
		if (children.style.display == 'none')
		{
			children.style.display = '';
		}
		else
			children.style.display = 'none';
	}
	//-->
	</SCRIPT>
<TABLE border="0">
<TBODY><TR id="l_10500" onClick="treeExpand(this.id)">
	<TD>+</TD>
	<TD>Главная передача</TD>
</TR>
<TR style="display:none">
	<TD>|</TD>
	<TD><TABLE border="0">
		<TBODY><TR>
			<TD>-</TD>
			<TD><A href=#>Раздаточная коробка</A></TD>
		</TR>
		<TR>
			<TD>-</TD>
			<TD><A href=#>Масла</A></TD>
		</TR>
		<TR id="l_10803" onClick="treeExpand(this.id)">
			<TD>+</TD>
			<TD>Продольный вал</TD>
		</TR>
		<TR style="display:none">
			<TD>|</TD>
			<TD><TABLE border="0">
				<TBODY><TR>
					<TD>-</TD>
					<TD><A href=#>Карданный вал</A></TD>
				</TR>
				<TR>
					<TD>-</TD>
					<TD><A href=#>Подшипник/опора</A></TD>
				</TR>
				<TR>
					<TD>-</TD>
					<TD><A href=#>Дисковой шарнир</A></TD>
				</TR></TBODY>
				</TABLE></TD>
		</TR>
		<TR>
			<TD>-</TD>
			<TD><A href=#>Переключатель</A></TD>
		</TR>
		<TR>
			<TD>-</TD>
			<TD><A href=#>Дифференциал</A></TD>
		</TR></TBODY>
		</TABLE></TD>
</TR>
<TR id="l_10441" onClick="treeExpand(this.id)">
	<TD>+</TD>
	<TD>Внутренняя отделка</TD>
</TR>
<TR style="display:none">
	<TD>|</TD>
	<TD><TABLE border="0">
		<TBODY><TR>
			<TD>-</TD>
			<TD><A href=#>Багажник / помещение для груза</A></TD>
		</TR>
		<TR>
			<TD>-</TD>
			<TD><A href=#>Коврики</A></TD>
		</TR>
		<TR>
			<TD>-</TD>
			<TD><A href=#>Комплектующие</A></TD>
		</TR>
		<TR>
			<TD>-</TD>
			<TD><A href=#>подлокотник</A></TD>
		</TR>
		<TR>
			<TD>-</TD>
			<TD><A href=#>Подъемное устройство для окон</A></TD>
		</TR>
		<TR>
			<TD>-</TD>
			<TD><A href=#>Подъемный механизм с верхним/нижним приводом</A></TD>
		</TR>
		<TR>
			<TD>-</TD>
			<TD><A href=#>Сидения</A></TD>
		</TR>
		<TR>
			<TD>-</TD>
			<TD><A href=#>Упругие элементы</A></TD>
		</TR></TBODY>
		</TABLE></TD>
</TR></TBODY>
</TABLE>
</BODY>
</HTML>
...
Рейтинг: 0 / 0
07.11.2005, 09:45
    #33363381
Berkut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Как построить DHTML-дерево с помощью таблицы?
4m@t!cвымостить ячейки дугамиЭто как?
...
Рейтинг: 0 / 0
07.11.2005, 10:28
    #33363457
4m@t!c
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Как построить DHTML-дерево с помощью таблицы?
Berkut 4m@t!cвымостить ячейки дугамиЭто как?
Что именно не понятно?
Слово "дуги" ?
...
Рейтинг: 0 / 0
07.11.2005, 11:27
    #33363590
Berkut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Как построить DHTML-дерево с помощью таблицы?
4m@t!cЧто именно не понятно?
Слово "дуги" ?Нет, именно словосочетание "вымостить ячейки дугами" :)
...
Рейтинг: 0 / 0
07.11.2005, 11:52
    #33363668
4m@t!c
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Как построить DHTML-дерево с помощью таблицы?
Ёпть, Бер!
Я имел ввиду организовать рисунки в ячейке, которые будет отображать связи...
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
07.11.2005, 12:29
    #33363764
Berkut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Как построить DHTML-дерево с помощью таблицы?
4m@t!cЁпть, Бер!
Я имел ввиду организовать рисунки в ячейке, которые будет отображать связи...
----------------------------------------
Артисты не приехали, приехали цыгане
Так бы сразу и сказал!
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (JS) Как построить DHTML-дерево с помощью таблицы? / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]