Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.02.2011, 12:14
Аспирант
Отправить личное сообщение для ntro123 Посмотреть профиль Найти все сообщения от ntro123
 
Регистрация: 18.10.2009
Сообщений: 57

вызов функции по названию переменной
Добрый день.

Вопрос следуший.

var id_name_func='0';

my_func+id_name_func+(text);

my_func0(text)
{
 alert(text);
}


Не могу вызвать ф-цию my_func0(), напрямую тоже не могу т.к. цифра (т.е. id) в конце функции может быть разным.

Т.е. через переменную нужно дополнить название функции и вызвать её. Но как незнаю, пробывал по всякому.

Заранее спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 21.02.2011, 12:23
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

<html>
<head>
<script>
var id_name_func= '0';
function my_func0(text)
{
 alert(text);
}
</script>
</head>
<body>
<input type="button" value="Call" onclick="*!*window['my_func'+id_name_func]('text');*/!*" />
</body>
</html>
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
Ответить с цитированием
  #3 (permalink)  
Старый 21.02.2011, 13:32
Аспирант
Отправить личное сообщение для ntro123 Посмотреть профиль Найти все сообщения от ntro123
 
Регистрация: 18.10.2009
Сообщений: 57

а есть еще какиенебудь методы?
Ответить с цитированием
  #4 (permalink)  
Старый 21.02.2011, 14:24
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

>а есть еще какиенебудь методы?
Сделать массивом, а не заниматься бредом.
Ответить с цитированием
  #5 (permalink)  
Старый 21.02.2011, 14:44
Аспирант
Отправить личное сообщение для ntro123 Посмотреть профиль Найти все сообщения от ntro123
 
Регистрация: 18.10.2009
Сообщений: 57

почему бредом то сразу?
просто написал оболочку для окон для своего проекта.
т.е. из чтобы было достаточно написать
<div id="swim_window0"><b>Сюда прокси:</b><textarea id="prxlsist"></textarea></div>


и запихнуть только нужные импуты туда, а все остальное типа кнопки сабмит, присвоения классов и т.д. он засунет в этот див сам.
и получится вот это:
http://javascript.ru/forum/attachmen...1&d=1298288297

Но тут еще 1 дело, он отправляет запросы на сервер, без асинхронности чтобы можно было в несколько потоков. И для каждого окна со своим id будет своя функция.

т.е. при клике на кнопку GO (не важно какой формы) срабатывало событие $('*[id^=go_stop]').click(function(){
//тут разный код дефолтный для всех окон
и потом через регулярные выражения выташить id и вызвать функцию с нужным id

return my_func+id();
});

Я не представляю как это сделать через массив, т.к. хочется тупо объявлять в отдельном файле название функций типа
function my_func0()
{
alert('privet');
}
и больше не очем не думать. а если через массив то мне придется присваивать этому массиву саму функцию, что не есть хорошо для меня.

Или я не прав?
Изображения:
Тип файла: jpg primer.jpg (17.3 Кб, 13 просмотров)
Ответить с цитированием
  #6 (permalink)  
Старый 21.02.2011, 14:51
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

Функция выполняющая одни и те же действия действия должна быть одна. В самой функции надо добавить всего одно простейшее условие дабы отличать один элемент от другого.
Ответить с цитированием
  #7 (permalink)  
Старый 21.02.2011, 14:54
Аспирант
Отправить личное сообщение для ntro123 Посмотреть профиль Найти все сообщения от ntro123
 
Регистрация: 18.10.2009
Сообщений: 57

Aetae,
вы имеете ввиду проверять какая кнопка вызвала функцию?
т.е.

if(this.id.match(/[0-9].{0,}$/i)=='0')
{
return my_func0();
}else if(this.id.match(/[0-9].{0,}$/i)==1')
{
return my_func1();
}
и т.д.

да это можно, но если таких будет 100?
Ответить с цитированием
  #8 (permalink)  
Старый 21.02.2011, 15:07
Аспирант
Отправить личное сообщение для ntro123 Посмотреть профиль Найти все сообщения от ntro123
 
Регистрация: 18.10.2009
Сообщений: 57

все спасибо нашел http://javascript.ru/accessors
Ответить с цитированием
  #9 (permalink)  
Старый 21.02.2011, 15:10
Аспирант
Отправить личное сообщение для ntro123 Посмотреть профиль Найти все сообщения от ntro123
 
Регистрация: 18.10.2009
Сообщений: 57

window['go_stop_swim'+this.id.match(/[0-9].{0,}$/i)]();
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов функции TicTac Общие вопросы Javascript 2 24.01.2011 23:35
изменение переменной в функции ananax Общие вопросы Javascript 19 12.01.2011 12:09
Вызов функции, находящейся в другой функции ZneP Events/DOM/Window 6 24.08.2010 18:45
непонятный вызов функции hedgi Общие вопросы Javascript 2 05.08.2010 11:55
Вызов функции из другой функции.. ?? glutton Общие вопросы Javascript 3 21.08.2009 22:33