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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как получить текст функции 
:(
    Опции темы
flaviovich
Дата 25.9.2005, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здразвуйте знакоти!
У меня вот такая проблема: мне нужно получить полный текст фунции в переменную. Функция находится во внешним файле:
<script language="JavaScript" src="js/forms.js"></script>

Я пробовал вот так
var x = document.getElementsByTagName("script")[0];
alert(x);

но это возвращает Object HTMLScriptElement.
Скажи пожалуйста как дальше..
а может вообще не правильно делаю?

PM MAIL   Вверх
o.s.a.
Дата 25.9.2005, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Xo4y B MocKBy
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 16.2.2005
Где: Ташкент

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



Цитата
toSource()  JavaScript 1.3

Возвращает строку исходного кода функции.

Возвращаемое значение
Метод toSource возвращает следующие значения:

Для встроенного объекта Function метод toSource возвращает следующую строку, означающую, что исходный код недоступен:
Function Function() {
[native code]
}

Для специальных функций метод toSource возвращает JavaScript-источник, который определяет объект как строку.

Параметры
None.



--------------------
Не могу стоять, пока другие работают, пойду полежу.
PM MAIL ICQ   Вверх
flaviovich
Дата 25.9.2005, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А пример дадите? А то у меня получается только {}
PM MAIL   Вверх
o.s.a.
Дата 25.9.2005, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Xo4y B MocKBy
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 16.2.2005
Где: Ташкент

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



Код

<html>
<title></title>
<script type="text/javascript">
 function my() {
   alert("Hello world!!!");
 }
</script>
</style>
<body>
<script type="text/javascript">
alert(my.toSource());
</script>
</body>
</html>



--------------------
Не могу стоять, пока другие работают, пойду полежу.
PM MAIL ICQ   Вверх
Zeroglif
Дата 25.9.2005, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



flaviovich

Цитата
А пример дадите? А то у меня получается только {}


Это потому что метод, предложенный o.s.a, применить нужно к функции:

Код

alert(myFunctionName.toSource());


а не так:

Код

alert(document.getElementsByTagName("script")[0].toSource());


Правда, в IE это всё равно не работает, но можно сделать так:

Код

alert(myFunctionName+'');


Или же (если в файле .js действительно всего одна функция) так:

Код

alert(document.getElementsByTagName('script')[0].innerHTML);


PM MAIL WWW   Вверх
Sardar
Дата 25.9.2005, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

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



toSource() в IE не существует, юзаем toString() - выдаст как раз текст функции


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
flaviovich
Дата 25.9.2005, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо большое ребята!
Вы мне очень помогли, только дальше мне надо получить доступ к переменной.
Допустим, у меня есть функция во внешним файле forms.js
Код

function f()
{
  var x = 5;
}

Как получить значение 5?
Заранне благодарю!

Это сообщение отредактировал(а) Aliance - 26.9.2005, 11:41
PM MAIL   Вверх
Zeroglif
Дата 26.9.2005, 08:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Переменная объявлена локально, доступа извне функции к ней нет. Или делай её глобальной (убирай var), или пусть функция её вернёт (return x), или, если условия задачи неизменяемы, то вытаскивай из строки заданный текст любыми подходящими строковыми методами.

Это сообщение отредактировал(а) Zeroglif - 26.9.2005, 08:13
PM MAIL WWW   Вверх
Sardar
Дата 26.9.2005, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

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



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

Опиши задачу в целом.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
flaviovich
Дата 26.9.2005, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Функцию нельзя изменять.
Вот что я задумал: Иметь весь текст функции в каком-нибудь массиве (допустим), и с ним делать все что угодно.
Zeroglif угадал!
Ну как, это возможно? или я плохо объяснял?
PM MAIL   Вверх
Zeroglif
Дата 26.9.2005, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата
Вот что я задумал: Иметь весь текст функции в каком-нибудь массиве (допустим), и с ним делать все что угодно.


Тебе бы лучше ясно форуму обозначить, какой результат треба получить, а так... можно много о чём фантазировать в свете возможностей великолепного Javascript. ;)


PM MAIL WWW   Вверх
Sardar
Дата 26.9.2005, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

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



Цитата(flaviovich @ 26.9.2005, 18:07)
и с ним делать все что угодно

Я с трудом представляю зачем это может понадобиться...
В любом случае придёться писать парсер JS кода, которым будешь разбирать/собирать функцию. Затем полученное дело функции можешь превратить в обьект функцию через new Function(аргументы, тело)

Если опишешь задачу, а не свои мысли, то вероятно получишь более правильное решение smile
Добавлено @ 21:51
Zeroglif опередил smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




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


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

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