Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Вызов отдельных функций скрипта из файла *.js


Автор: AtaL 18.2.2006, 21:15
Доброго времени суток. Программер я совсем начинающий, столкнулась со следующей проблемой:

Допустим, есть некий manyscripts.js, содержащий множество различных функций.

function fun1() {...}
function fun2() {...}
...
function funN() {...}

[далее могут идти вызовы этих функций и др. работа скрипта]


В хтмл-документе я могу запустить этот скрипт целиком через
<script ... src="manyscripts.js"></script>

Все выполняется, все отлично.
Но как добиться, чтобы в документе в произвольных его местах можно было выполнять какую-либо отдельную (отдельные) функцию? (фактически этот js-файл, кажется, тогда библиотекой будет?)

Вариант с

<script ... src="manyscripts.js"> fun1(); </script>

не работает.

Можно, конечно, пихнуть этот набор функций в <HEAD>, но задача стоит именно на присоединяемый файл.


Если можно, любой работающий пример. Хотя бы на какой-нибудь Hello Word, выводимый вызовом функции printhello(). :)

Автор: 12345c 18.2.2006, 21:29
Не понятно, как это смогло работать. Работать будет такая строчка:
<script src="manyscripts.js"></script >
Она есть то же, что включение содержимого файла в текст.

Далее в HTML:
Вызов функции на выполнение:
<script> fun1(); </script>

Автор: AtaL 18.2.2006, 21:59
Непонятно, как это смогло работать.
Прошу прощения, опечаталась. Исправила.)

Да, при включении ресурса в HEAD заработало. Спасибо!

С вашего позволения, усложню вопрос.

Допустим, есть несколько таких вот наборов функций в нескольких файлах. Все они тоже должны без проблем подключаться и выполняться тем же способом?

Если да, то что делать, если имя каких-либо различных функций в двух файлах js совпадает? Можно ли решить эту проблему, не меняя имя функции в подключаемом файле?

Автор: Innuendo 18.2.2006, 22:22
лучше поменяйте название функций. А то не понятно к чему ссылаться smile

Автор: AtaL 18.2.2006, 22:38
Innuendo,
Да, это очевидный выход. Но если библиотеки написаны не мной, и изменение имени функции повлечет за собой переписывание целой библиотеки? (допустим, она часто вызывается другими функциями)?
Мне интересно, теоретически возможно жестко прописать связь "источник - функция"?

Автор: 12345c 18.2.2006, 23:28
AtaL, да, включение нескольких файлов равносильно включению их кодов в той же последовательности.

Если встречаются одинаковые имена, то они переопределяются, теряя предыдущие определения (как a=1;a=2; даст a == 2). Если библиотеки поменять нельзя, но функии использовать хочется, то можно :). После определения одной замените конфликтные имена на другие, и функция сохранится под другим именем. Правда, если функция используется в той библиотеке, то будет морока по переименовке обратно при обращении к библиотеке, но тут уж сами решайте, что удобнее.

Автор: AtaL 19.2.2006, 01:04
12345c
Спасибо! Вопрос исчерпан.)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)