Страница 1 из 1

Как задать функцию в качестве одного из аргументов?

СообщениеДобавлено: Ср ноя 05, 2008 17:26
Padonak
Не поместилось в заголовке: как задать какую-либо функцию в качестве одного из аргументов другой функции? Не нашел чота в своем справочнике похожей фигни никакой. короче смысл в том что мне надо в рекурсивной ф-ции на определенном этапе вызывать другую функцию (уменьшая картинку надо ее каждый раз выравнивать по центру экрана при каждой итерации). попробовал написать вот так:

removePic(arg1, arg2,..,"findCenter(arg1,arg2)")

не прокатило. попробовал в самой ф-ции removePic когда наступает момент работы findCenter написать:

if(removePic.arguments[соотв.номер]){eval(removePic.arguments[соотв.номер])}

тоже нифига не прокатило. я как-то раньше с такой задачей не сталкивалсо подскажите кто в курсе пожалуйста люди добрые а то все документы украли и никак не можем в Туркмению вернуться на родину историческуйу...

Re: Как задать функцию в качестве одного из аргументов?

СообщениеДобавлено: Ср ноя 05, 2008 21:15
Jedi
А нельзя сделать чтоли arg3 = findCenter(arg1,arg2)?

Re: Как задать функцию в качестве одного из аргументов?

СообщениеДобавлено: Чт ноя 06, 2008 9:53
kost
Какой язык?

Re: Как задать функцию в качестве одного из аргументов?

СообщениеДобавлено: Чт ноя 06, 2008 9:54
kost
Если JS, то:
Код: Выделить всё
removePic(arg1, arg2,..,findCenter(arg1,arg2))

Re: Как задать функцию в качестве одного из аргументов?

СообщениеДобавлено: Чт ноя 06, 2008 10:11
Padonak
kost
ага - JS.
у меня так не работало... это было первое что я попробовал.

Re: Как задать функцию в качестве одного из аргументов?

СообщениеДобавлено: Чт ноя 06, 2008 10:12
Padonak
Jedi
ну если бы получилось сразу разве стал бы я вам моск парить?

Re: Как задать функцию в качестве одного из аргументов?

СообщениеДобавлено: Чт ноя 06, 2008 12:39
Muerto
removePic(arg1, arg2,.., arg3 = new findCenter(arg1,arg2))
А так прокатит? И кинь мне код на мыло, чтобы я мог поэксперементировать.

Re: Как задать функцию в качестве одного из аргументов?

СообщениеДобавлено: Чт ноя 06, 2008 16:52
Padonak
код дома у меня а интернета у меня все еще там нет так что его тока завтра смогу принести.

Re: Как задать функцию в качестве одного из аргументов?

СообщениеДобавлено: Пт ноя 07, 2008 10:14
Padonak
вот вам код. в скрипте есть коммент на месте косяка.

поясню точнее что я пытался сделать. в хтмл-файле есть скрипт раздающий картинкам всякие онклики и т.д. в нем есть вот такие строчки:
Код: Выделить всё
dim[i].ondblclick = function(){
if(agent.indexOf("MSIE") != -1){removePic(this.id, "", this.width, this.height, 100);}
if((agent.indexOf("Opera") != -1) || (agent.indexOf("Firefox") != -1)){removePic(this.id, "", this.width, this.height, 1.0);}
else{removePic(this.id, "", this.width, this.height, "");}
}


идея состоит в том что в качестве аргумента ф-ции ремувПик может выступать не только файндСентер но и любая другая ф-ция иначе просто можно было бы прописать вызов файндСентер прямо в код ремувПик (как там щас и сделано) и не размножать себе моск. но если я пишу в отрывке приведенном выше вот так removePic(this.id, "", this.width, this.height, "", findCenter(this.id)) то файндСентер не пашет -42-

Re: Как задать функцию в качестве одного из аргументов?

СообщениеДобавлено: Пт ноя 07, 2008 13:10
Muerto
Никак не могу активизировать мозговые клетки чтобы догнать что именно у тебя не выходит. Функции нормально вызываются. К примеру:
Код: Выделить всё
<script language="JavaScript" type="text/javascript">
<!--
function setAlert(vol){
alert(vol);
}
function setImages(){
var dim = document.images;
for(var i = 0; i < dim.length; i++){
if(!dim[i].id){dim[i].setAttribute("id","pic_" + i);}
/*dim[i].onmouseover = function(){
this.style.border = "1px dashed #000";
var w = this.width; this.width = w - 1;
var h = this.height; this.height = h - 1;
}
dim[i].onmouseout = function(){
this.style.border = "none";
var w = this.width; this.width = w + 1;
var h = this.height; this.height = h + 1;
}*/
dim[i].onclick = function(){findCenter(this.id, "pointer", "картинка '" + this.src.substring(this.src.lastIndexOf("/") + 1, this.src.length - 4) + "'", al = new setAlert(this.id));}
dim[i].ondblclick = function(){
if(agent.indexOf("MSIE") != -1){removePic(this.id, "", this.width, this.height, 100);}
if((agent.indexOf("Opera") != -1) || (agent.indexOf("Firefox") != -1)){removePic(this.id, "", this.width, this.height, 1.0);}
else{removePic(this.id, "", this.width, this.height, "");}
}
}
}
//-->
</script>

Re: Как задать функцию в качестве одного из аргументов?

СообщениеДобавлено: Пт ноя 07, 2008 16:49
Padonak
я не в онклик вставлял а в ондаблклик в ремувПик... но вот так al = new setAlert(this.id) я не пробовал. седня проверю.

Re: Как задать функцию в качестве одного из аргументов?

СообщениеДобавлено: Пн ноя 10, 2008 14:32
Padonak
Муерта вобщем я и так и эдак пробовал - не пашет нифига... ты как после дня ментов отойдешь может-таки чо пацкажешь а? возможно имеет значение тот факт что я пытаюсь подставить это в рекурсивную функцыйу которая глючит при вызове самой себя?

Re: Как задать функцию в качестве одного из аргументов?

СообщениеДобавлено: Пн ноя 10, 2008 15:03
kost
Не пашет нифига -- в чем проявляется? Какая ошибка?

Re: Как задать функцию в качестве одного из аргументов?

СообщениеДобавлено: Пн ноя 10, 2008 15:43
Padonak
чота типа cannot convert undefined or null to object щас точно не скажу но вроде эта ошибка (в консоли ошибок Оперы) а в фаерфоксе кажется что-то типа node not found