|  | 
	| 
	| 
	
	| 
		
	| 
			
			 
			
				15.02.2010, 14:29
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 13.02.2010 
						Сообщений: 10
					 
		
 |  |  
	| 
				конструкции взаимодействия функций
			 Есть вложенная функция, например: 
	
 
	| Код: |  
	| function x()
{
function y()
{alert(10);}
} |  
	
 
есть потребность ее вызвать (y) из другой части программы, или посредством обработчика события после завершения выполнения функции x. Посоветуйте пожалуйста, как можно решить такую задачу. |  |  
	| 
		
	| 
			
			 
			
				15.02.2010, 14:33
			
			
			
		 |  
	| 
		
			
			| Новичок на форуме       |  | 
					Регистрация: 19.02.2008 
						Сообщений: 9,177
					 
		
 |  |  
	| Зачем вы определяете эту функцию внутри другой функции, если она нужна снаружи? |  |  
	| 
		
	| 
			
			 
			
				15.02.2010, 15:45
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 13.02.2010 
						Сообщений: 10
					 
		
 |  |  
	| Дело в том, что нужна такая сложная конструкция: при выборе пользователя из select запускается функция, которая производит обработку некоторых данных, открывает формы на странице, при этом полностью не завершает свою работу, а при вводе пользователем данных в открытые формы производит их обработку и при некоторых условиях снова возвращается к началу своего выполнения, изменив значения  некоторых параметров. |  |  
	| 
		
	| 
			
			 
			
				15.02.2010, 17:52
			
			
			
		 |  
	| 
		
			
			| Аспирант       |  | 
					Регистрация: 10.04.2008 
						Сообщений: 83
					 
		
 |  |  
	| Простите, но так и не понятно до сих пор почему бы не вынести функцию y() из x()? Вы ее скрыть хотите? тогда никак. |  |  
	| 
		
	| 
			
			 
			
				15.02.2010, 18:44
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 13.02.2010 
						Сообщений: 10
					 
		
 |  |  
	| Мне нужно, как я понимаю, чтобы обработчик, например, onkeyup(), мог выполнить определенную часть кода внутри той функции, которая будет иметь циклическое повторение. А каким образом можно еще это сделать, не знаю. |  |  
	| 
		
	| 
			
			 
			
				15.02.2010, 18:52
			
			
			
		 |  
	| 
		
			
			| Новичок на форуме       |  | 
					Регистрация: 19.02.2008 
						Сообщений: 9,177
					 
		
 |  |  
	| Навешивайте обработчик внутри той функции. |  |  
	| 
		
	| 
			
			 
			
				15.02.2010, 19:52
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 13.02.2010 
						Сообщений: 10
					 
		
 |  |  
	| Можете пояснить, как это сделать? Что-то не врублюсь. Функция отдельно, а события происходят в форме. В моих соображениях это выглядело где-то так: 
	
 
	| Код: |  
	| 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> |  
	
 |  |  
	| 
		
	| 
			
			 
			
				15.02.2010, 20:05
			
			
			
		 |  
	| 
		
			|  | ⊞ Развернуть       |  | 
					Регистрация: 11.01.2010 
						Сообщений: 1,810
					 
		
 |  |  
	| 
	
 
	| Сообщение от neurostep |  
	| тогда никак. |  
	
 Ну можно получить код функции x, вырезать из него код функции y, проeval'ировать ее... Ну в общем Вы поняли, какой дурацкий это способ. |  |  
	| 
		
	| 
			
			 
			
				17.02.2010, 18:18
			
			
			
		 |  
	| 
		
			|  | Пионэр       |  | 
					Регистрация: 16.11.2009 
						Сообщений: 1,322
					 
		
 |  |  
	| Можно так: 
function x()
{
function y()
{alert(10);}
arguments.callee.y = y;
}
…
x.y();
Но зачем? |  |  |  |