Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2009, 07:14   #1
<Егор>
 
Регистрация: 11.11.2009
Сообщений: 6
По умолчанию Зациклевание функции

Файл "Tree.js"
Код:
function changeDisplay(id){        //Функция открытия закрытия дерева
var ul = document.getElementById('ul' + id).style;
var li = document.getElementById('li' + id).style;
if ( 'none' == ul.display ){ul.display = 'block';}else{ul.display = 'none';}
}

function locv() {

Silki = [	['http://Сайт№1.ru','Папка1','Изображение1.jpg'],   //Двумерный массив ссылок для примера
			['http://Сайт№1.ru','Папка1','Изображение2.jpg'],
			['http://Сайт№1.ru','Папка1','Изображение3.jpg'],
			['http://Сайт№1.ru','Папка2','Изображение1.jpg'],
			['http://Сайт№1.ru','Папка2','Изображение2.jpg'],
			['http://Сайт№1.ru','Папка2','Изображение3.jpg'],

			['http://Сайт№2.ru','Папка1','Изображение1.jpg'],
			['http://Сайт№2.ru','Папка1','Изображение2.jpg'],
			['http://Сайт№2.ru','Папка2','Изображение1.jpg'],
			['http://Сайт№2.ru','Папка2','Изображение2.jpg'],
			['http://Сайт№2.ru','Папка3','Изображение1.jpg'],
			['http://Сайт№2.ru','Папка3','Изображение2.jpg'],

			['http://Сайт№3.ru','Папка1','Изображение1.jpg'],
			['http://Сайт№3.ru','Папка1','Изображение2.jpg'],
			['http://Сайт№3.ru','Папка2','Изображение1.jpg'],
			['http://Сайт№3.ru','Папка2','Изображение2.jpg'],
			['http://Сайт№3.ru','Папка3','Изображение1.jpg'],
			['http://Сайт№3.ru','Папка3','Изображение2.jpg']];

Silki.sort();

function CreateTree(Silki,Sigment){ ;  //Фунция построения дерева
//Инициализация переменных
var ASilk=Silki;
var ASigment=[];
var ASilkNew=[];
var Derevo='';
var id=0;
var nx=-1;
//Генерируем трёхмерный массив
//1параметр:номер под масива масиива
//2параметр:масив сылок
//3параметр:номер сигмента
//Каждый под массив содержит в себе только те сылки в которых указаный сигмент одинаковый
	for (i=0; i<ASilk.length; i++){
		if (ASigment.indexOf(ASilk[i][Sigment])==-1){
		nx++
		ASigment[nx]=ASilk[i][Sigment];
		ASilkNew[nx]=[];
		ASilkNew[nx].push(ASilk[i]);
	    }else{
		ASilkNew[nx].push(ASilk[i]);
	    }
	}
//после обработки это выглядит примерно так
//ASilkNew = [[['http://Сайт№1.ru','Папка1','Изображение1.jpg'],
//			['http://Сайт№1.ru','Папка1','Изображение2.jpg'],
//			['http://Сайт№1.ru','Папка1','Изображение3.jpg'],
//			['http://Сайт№1.ru','Папка2','Изображение1.jpg'],
//			['http://Сайт№1.ru','Папка2','Изображение2.jpg'],
//			['http://Сайт№1.ru','Папка2','Изображение3.jpg']],
//
//		   [['http://Сайт№2.ru','Папка1','Изображение1.jpg'],
//			['http://Сайт№2.ru','Папка1','Изображение2.jpg'],
//			['http://Сайт№2.ru','Папка2','Изображение1.jpg'],
//			['http://Сайт№2.ru','Папка2','Изображение2.jpg'],
//			['http://Сайт№2.ru','Папка3','Изображение1.jpg'],
//			['http://Сайт№2.ru','Папка3','Изображение2.jpg']],
//
//		   [['http://Сайт№3.ru','Папка1','Изображение1.jpg'],
//			['http://Сайт№3.ru','Папка1','Изображение2.jpg'],
//			['http://Сайт№3.ru','Папка2','Изображение1.jpg'],
//			['http://Сайт№3.ru','Папка2','Изображение2.jpg'],
//			['http://Сайт№3.ru','Папка3','Изображение1.jpg'],
//			['http://Сайт№3.ru','Папка3','Изображение2.jpg']]];

	////////////////////////////////////////////////////////////////////////////
	for (i=0; i<ASilkNew.length; i++){  //Пройдёмся по всем под массивам
		id=Math.round(Math.random()*100000000000000000000000000);
			//генирируем идеинтификатор ля каждой ступенки дерева
			//if (ASilkNew[i][0][Sigment+1] != undefined) {
			//ели сигмент не последний в ссылки делаем ступньку с вкладкой для следующих ступенек
			if (Sigment != (ASilkNew[i][0].length-1)) {
				Derevo+='<li id="li'+id+'" ><a href="javascript: changeDisplay('+id+'); ">'+'('+(i+1)+'/'+
				ASilkNew.length+')'+ASilkNew[i][0][Sigment]+'</a></li>'+
						'<ul id="ul'+id+'" style="display: none; ">'+
						CreateTree(ASilkNew[i],Sigment+1)+
			//во вкладке для дледующих ступенек вызываем этоу же функцию но терь указываем
			//соответсвующий под масив со следующим симентом
						'</ul>';
			//ели сигмент последний в ссылки делаем ступньку с сылкой на файл
			}else{
				Derevo+= '<li id="li1'+id+'"><a href="'+ASilkNew[i][0].join('/')+'">'+      '('+(i+1)+'/'+
				ASilkNew.length+')'+ASilkNew[i][0][Sigment]+'</a></li>';
			}
	}
return Derevo
}

bb=CreateTree(Silki,0);
bb='<Left><ul id="ul999999999" >'+bb+'</ul></Left>';

var bod1=document.getElementsByTagName('BODY');
fr0=document.createElement('DIV');
fr0.innerHTML =bb;
bod1[0].appendChild(fr0);
}
document.addEventListener('load', locv , false);
файл index.html
Код:
<body bgcolor=#ffffff>
<script language=JavaScript src="Tree.js"></script>
</body>
Собственно почему криво работает "функция построения дерева"
Функция правельно работает Но отображаеца токо дерево первого сайта

Последний раз редактировалось <Егор>; 13.11.2009 в 06:59. Причина: Коментарии к коду
<Егор> вне форума Ответить с цитированием
Старый 13.11.2009, 06:51   #2
<Егор>
 
Регистрация: 11.11.2009
Сообщений: 6
По умолчанию

Ну что никто помоч не может я обнавил немножко коментарии, данные
икал визде где мог унал только то что выпонение фунции с одними параметрами останавливаеца как только она вызывает сама себя
<Егор> вне форума Ответить с цитированием
Старый 18.11.2009, 04:31   #3
<Егор>
 
Регистрация: 11.11.2009
Сообщений: 6
По умолчанию

ВСЁ можно закрывать тему, я разобрался
<Егор> вне форума Ответить с цитированием
Старый 18.11.2009, 06:42   #4
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,758
По умолчанию

Цитата:
Сообщение от <Егор> Посмотреть сообщение
ВСЁ можно закрывать тему, я разобрался
Можно было бы выложить и рабочий пример после исправления. А также будущем в названии темы указывать не проблему - а то что скрипт должен делать.

А то что у вас что-то зацикливается можно и в сообщении указать.
Alar вне форума Ответить с цитированием
Старый 20.11.2009, 09:52   #5
<Егор>
 
Регистрация: 11.11.2009
Сообщений: 6
По умолчанию

Ну еслиб хоть ктонибуть за интерисовался и хотябы попытался чтото зделать например, попыталя перенести всё в файлы ,запустить он бы сразу понял в чём проблема!
А тут как я вижу Форум нахлебников готовых поженать уже готовенькое
<Егор> вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функции Syltan Общие вопросы C/C++ 9 28.08.2009 18:36
Чем отличается описание функции от определения функции в С++? Go6a Помощь студентам 4 18.07.2009 18:07
функции helavisa Общие вопросы C/C++ 2 31.05.2009 22:23
Функции. Передача массива в качестве параметра функции. Wia Помощь студентам 2 17.03.2009 14:57
Функции furian Общие вопросы C/C++ 3 18.12.2007 12:48