Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   конструкции взаимодействия функций (https://javascript.ru/forum/dom-window/7702-konstrukcii-vzaimodejjstviya-funkcijj.html)

Vitalyk 15.02.2010 14:29

конструкции взаимодействия функций
 
Есть вложенная функция, например:
Код:

function x()
{
function y()
{alert(10);}
}

есть потребность ее вызвать (y) из другой части программы, или посредством обработчика события после завершения выполнения функции x. Посоветуйте пожалуйста, как можно решить такую задачу.

Kolyaj 15.02.2010 14:33

Зачем вы определяете эту функцию внутри другой функции, если она нужна снаружи?

Vitalyk 15.02.2010 15:45

Дело в том, что нужна такая сложная конструкция: при выборе пользователя из select запускается функция, которая производит обработку некоторых данных, открывает формы на странице, при этом полностью не завершает свою работу, а при вводе пользователем данных в открытые формы производит их обработку и при некоторых условиях снова возвращается к началу своего выполнения, изменив значения некоторых параметров.

neurostep 15.02.2010 17:52

Простите, но так и не понятно до сих пор почему бы не вынести функцию y() из x()? Вы ее скрыть хотите? тогда никак.

Vitalyk 15.02.2010 18:44

Мне нужно, как я понимаю, чтобы обработчик, например, onkeyup(), мог выполнить определенную часть кода внутри той функции, которая будет иметь циклическое повторение. А каким образом можно еще это сделать, не знаю.

Kolyaj 15.02.2010 18:52

Навешивайте обработчик внутри той функции.

Vitalyk 15.02.2010 19:52

Можете пояснить, как это сделать? Что-то не врублюсь. Функция отдельно, а события происходят в форме. В моих соображениях это выглядело где-то так:
Код:

function x()
{...
function _google()
{
 x=document.getElementById('F4_2').value;
 var i=0;
 var t;
... ... }   
... }
 <form ID='F4_2'>
<input type='text' onkeydown='_clean()'; onkeyup='_google();_reset()'></form>


B@rmaley.e><e 15.02.2010 20:05

Цитата:

Сообщение от neurostep
тогда никак.

Ну можно получить код функции x, вырезать из него код функции y, проeval'ировать ее... Ну в общем Вы поняли, какой дурацкий это способ.

Kolyaj 16.02.2010 09:30

Цитата:

Сообщение от Vitalyk
Можете пояснить, как это сделать?

http://javascript.ru/tutorial/events

subzey 17.02.2010 18:18

Можно так:
function x()
{
function y()
{alert(10);}
arguments.callee.y = y;
}
…
x.y();

Но зачем?


Часовой пояс GMT +3, время: 08:06.