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

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

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

Код: 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
(JS) Как построить DHTML-дерево с помощью таблицы?
    #33360869
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я как раз сейчас тоже занимаюсь отображением деревьев, но у меня получается таблица в таблице, а не добавление строк..
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
(JS) Как построить DHTML-дерево с помощью таблицы?
    #33360883
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4m@t!cЯ как раз сейчас тоже занимаюсь отображением деревьев, но у меня получается таблица в таблице, а не добавление строк..
----------------------------------------
Артисты не приехали, приехали цыганеВозможно данный вариант подойдет. :)
4m@t!c , если будут предложения по улучшению, то выложи сюда потом. :)
...
Рейтинг: 0 / 0
(JS) Как построить DHTML-дерево с помощью таблицы?
    #33361194
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
(JS) Как построить DHTML-дерево с помощью таблицы?
    #33363381
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4m@t!cвымостить ячейки дугамиЭто как?
...
Рейтинг: 0 / 0
(JS) Как построить DHTML-дерево с помощью таблицы?
    #33363457
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Berkut 4m@t!cвымостить ячейки дугамиЭто как?
Что именно не понятно?
Слово "дуги" ?
...
Рейтинг: 0 / 0
(JS) Как построить DHTML-дерево с помощью таблицы?
    #33363590
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4m@t!cЧто именно не понятно?
Слово "дуги" ?Нет, именно словосочетание "вымостить ячейки дугами" :)
...
Рейтинг: 0 / 0
(JS) Как построить DHTML-дерево с помощью таблицы?
    #33363668
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ёпть, Бер!
Я имел ввиду организовать рисунки в ячейке, которые будет отображать связи...
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
(JS) Как построить DHTML-дерево с помощью таблицы?
    #33363764
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4m@t!cЁпть, Бер!
Я имел ввиду организовать рисунки в ячейке, которые будет отображать связи...
----------------------------------------
Артисты не приехали, приехали цыгане
Так бы сразу и сказал!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (JS) Как построить DHTML-дерево с помощью таблицы?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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