[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Очередность события
Slays
Есть

window.onload = function(){
getStruct(); // подгружает DOM элементы через ajax и добавляет на страницу

openStruct(); // функция работает с подгруженной структурой
}


как сделать, чтобы openStruct() выполнялась только после полной отработки getStruct(), т.е. когда структура уже подгружена ?

также openStruct() содержит цикл,

for(var i in aux){
edClass(aux[i]);


где edClass() тоже подгружает структуру, как сделать так, чтобы цикл продолжал свое действие, только после полной отработки edClass(), те
получаем в цикле edClass(1) - цикл ждет когда функция отработает и только потом меняет аргумент и запускает edClass(2) и тд



Спустя 34 минуты, 9 секунд (28.09.2010 - 10:45) Joker написал(а):
Т.к. кризис еще только начал кончатся наш форум не успел нанять экстрасенсов, поэтому просим вас продемонстрировать код функций: getStruct(); и openStruct();

Спустя 7 минут, 41 секунда (28.09.2010 - 10:53) Slays написал(а):
да они впринципе могут содержать что угодно, мне лишь важно узнать, как указать одной функции, чтоб она выполнялась только по завершению другой, и тоже самое с циклами, как сделать так, чтобы цикл каждый раз ждал полного выполнение вызываемой функции

Спустя 8 минут, 26 секунд (28.09.2010 - 11:01) Joker написал(а):
Цитата (Slays @ 28.09.2010 - 12:53)
да они впринципе могут содержать что угодно, мне лишь важно узнать, как указать одной функции, чтоб она выполнялась только по завершению другой,

так всегда и происходит, и не как иначе.

Спустя 12 минут, 9 секунд (28.09.2010 - 11:14) ZSH написал(а):
window.onload = function(){
getStruct(); // подгружает DOM элементы через ajax и добавляет на страницу

openStruct(); // функция работает с подгруженной структурой
}

вот отсюда убираем вызов функции openStruct().

А в функции getStruct() , после того как получен ответ от сервера и сделаны все нужные операции с ответом, делаем вызов openStruct()

Спустя 21 минута, 34 секунды (28.09.2010 - 11:35) Slays написал(а):
не, такое не получится, ладно ща попробую модель поподробней расписать =)

window.onload = function(){
getStruct('0'); // подгружает родительский DOM элемент через ajax и добавляет на страницу

openStruct();
}

function openStruct(){
// достает элементы из куки и передает в edClass, но цикл не дожидается полного выполнения edClass, из-за чего node не может найти элемент с заданным id, еще не построен в DOM


if(get_cookie('c_openStruct')){
var openStruct = get_cookie('c_openStruct');
var aux = openStruct.split(',');
aux.pop();
for(var i in aux){
edClass(aux[i]);
}
}
}


function edClass(id){
var node = document.getElementById(id);

// какие-то операции c node

getStruct(id); // строит дочерние элементы для node
}


function getStruct(id){

jQuery.ajax({
type: "POST",
url: "файл",
data: "id=" + id,
success: function(struct){
$("#container").html(struct);

// получаем дочерние элементы и строим их, если openStruct() записать сюда, то будет бесконечный цикл, т.к. в каждом getStruct будет полностью перебираться цикл из openStruct() который опять же вызывает getStruct

}
}
);
}


Если в двух словах, то суть такая: берем id из куки, строим дочерние элементы родителя с данным id, после чего берем следующий id, строим его дочерние элементы и тд.

Спустя 10 часов, 25 минут, 48 секунд (28.09.2010 - 22:01) linker написал(а):
Ну реализуй в getStruct() синхронный AJAX-запрос вместо асинхронного.


_____________
если помог, не скупись на карму =)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.