2012-11-09 4 views
0

Я следую за книгой, и у меня есть 2 файла javascript. Оба находятся в HTML-файле, как:используя функцию javascript внутри другого файла js

<script src="playlist_store.js"></script> 
<script src="playlist.js"></script> 

однако, когда я пытаюсь вызвать функцию из playlist_store.js внутри из playlist.js хром отладчик говорит «неперехваченная ссылка ошибка loadPlaylist не определена loadPlaylist() есть.. функция из playlist_store.js

Я думал, что где-то может быть опечатка, но я не думаю, что есть. Действительно ли playlist.js нужно каким-то образом импортировать или включить/потребовать playlist_store.js? достаточно, чтобы каким-то образом связать их так, чтобы функции в одном вы могли звонить из другого?

+0

Порядок загрузки файлов? Помогает ли вам отменить включение? –

+4

Функция в playlist_store.js может не находиться в глобальной области. – Gael

+0

Отправьте код в 'playlist_store.js'. Вам не нужно делать импорт. Если 'loadPlaylist' фактически определен как функция в области видимости, он должен работать. – Jacob

ответ

2

Определение функции типа fo llows

function myaction() { } 

есть (частный) функция а имени.
Лучше написать (частный) функции, назначенной переменной:

var myaction = function() { }; 

Теперь то, что вам нужно, это функция, которая присваивается переменной в глобальном объекте:

myaction = function() { }; 
// or strict: 
window.myaction = function() { }; 

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

Опасайтесь, что в первом примере оператор функции не имеет точки с запятой. Используя оператор функции, как и в других примерах, вам нужна точка с запятой.

+0

Я определил функцию как первую функцию функции myaction() {}. Видимо, хотя, когда я копировал и вставлял из PDF-файла в выражение, кавычки «» стали разными, и у него была некоторая ошибка, которая мешала playlist_store.js загружать и вызывала ошибку. Я нашел его в хром-отладчике. Спасибо за помощь! – NoTiG

Смежные вопросы