Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как функцию в функции по завершению передать, на её выполнение? 
:(
    Опции темы
Viroman
Дата 7.10.2008, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 28.7.2008

Репутация: нет
Всего: нет



Вот вопрос, имею предположим функцию, теперь я хочу чтобы функция вызывала другую функцию, но в качестве переданного параметра!
То есть function show(id,func2) где func2, это функция, которая должна выполниться по завершению этой функции, но ясное дело, чтобы она как бы в качестве параметра передавалась.
Как сделать, мне просто после каждой загрузки в аякс надо в зависимости, в какой div и что я гружу по окончании загрузки выполнять свою желаемую функцию. Подумалось мне, нежели я буду отпрашивать название айди, куда содержание аякс ответа должно грузиться, и раздувать код, да ёщё делая его медленней, было бы идеальнее передавать название функции, которая должна выполниться по завершению через параметр. Можно ли?

Это сообщение отредактировал(а) Viroman - 7.10.2008, 20:41
PM MAIL   Вверх
Nigel
Дата 7.10.2008, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


познаю мир
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 20.11.2007

Репутация: 1
Всего: 19



Типо так?
Код

....
onreadystatechange=myfunc;
....
function myfunc() {
...
show(id, xmlHttp.responseText);
}
function show(id, param) {
if(param==...){
//code1
} else {
//code2
}
}

PM MAIL   Вверх
Viroman
Дата 7.10.2008, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 28.7.2008

Репутация: нет
Всего: нет



Типа так не хотелось бы, типа так раздувать не хочется, если, да кабы, слишком много функций можно напихать на отпрос, а кокретнее можно?
PM MAIL   Вверх
Hades
Дата 7.10.2008, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 8.8.2008

Репутация: 2
Всего: 37



PM MAIL   Вверх
ksnk
Дата 7.10.2008, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



Hades, Боюсь, что здесь не тот клинический случай, который описан в статье.


Viroman, А зачем передавать название? Саму функцию тоже можно спокойно передавать...
Код

function handleA(){
  alert(1);
}

function handleB(){
  alert(2);
}

function handle(C){
  C();
}


handle(handleA);
handle(handleB);




--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Viroman
Дата 8.10.2008, 06:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 28.7.2008

Репутация: нет
Всего: нет



Друзья, давайте организуем мозговую атаку, представим себе аякс скрипт.
Теперь послали мы запрос в аяксфункцию, как правило тот действует так,
функция, далее указание на айди див элемента, куда содержание должно загрузиться и собственно ссылка на то, что должно загрузиться, теперь если глянем в аякс скрипт повнимательней, то там увидим, onreadystatechange, или прочие название говорящие о том, что данные были получены, но эти данные тем самым сразу не попадают в окно див элемента, а заносятся через innerHTML, значит фишка в том, что функция, которую я хочу, чтобы та была выполнена, должна выполниться только после того, как содержание будет подкачено в див элемент и ни секундой раньше, мне не надо вызывать функцию, прежде чем эти данные в окно элемента див попадут, но поскольку скрипт один, а див элементов много, и много функций, которые должны выполняться по поданию содержания аякс запроса в див элемент, то разумнее всего представить себе нечто, типа аякс функции, где помимо указания на айди див элемта и ссылки, также будет находиться параметр, куда передаётся название функции, которая должна выполниться по завершению, однако без ухищрений, типа если этот параметр зовётся так, делай то, если так, то делай это, мне реально нужно, чтобы тот выполнялся как функция из под названия параметра, а не под if/else отпрос..
PM MAIL   Вверх
ksnk
Дата 8.10.2008, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



Viroman, вместо мозговой атаки и воображения себе велосипеда можно посмотреть на готовые решения. Все они работают с понятием callback-функция, простейший пример которой я привел. Вызывать функцию по имени - такого я не видел ни в одной библиотеке smile


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Viroman
Дата 8.10.2008, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 28.7.2008

Репутация: нет
Всего: нет



Цитата

Все они работают с понятием callback-функция, простейший пример которой я привел.

Да вы что, серьёзно? Вау, и вариабельное количество параметров тоже можно передавать, вау, а как???
PM MAIL   Вверх
ksnk
Дата 8.10.2008, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



C переменным числом параметров несколько сложнее smile
Код

function handleA(a1,a2){
  alert([a1,a2]);
}
function handleB(a1,a2,a3,a4,a5){
  alert([a1,a2,a3,a4,a5]);
}
function handle(C){
  var length = handle.arguments.length,param=[];
  for (var i = 1; i < length; i++)
    param.push(handle.arguments[i]);

  C.apply(this,param);
}
handle(handleA,10,11);
handle(handleB,1,2,3,4,5);



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Viroman
Дата 9.10.2008, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 28.7.2008

Репутация: нет
Всего: нет



Spasibo! Neskolko uhitschrennee, no tem ne menee, spasibo!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0546 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.