2016-09-21 7 views
0

У меня есть это в моем HTML файл:JavaScript взаимозависимые функции

<script src="/file.js"/> 
<script> 
func_from_file(); 
main_func(){ 
    alert("some alert"); 
} 
</script> 

И это в моих file.js:

func_from_file(){ 
    alert("some alert from file"); 
} 
main_func(); 

Так что у меня этот скрипт в HTML-файл, который вызывает функцию из file.js , а также имеет скрипт внутри file.js, который вызывает функцию из html-файла. Как избежать reference error?

P.S. Я не могу соединить скрипты, не могу поместить скрипт из HTML-страницы в некоторый file.js, и я не могу изменить очередь загрузки. Помоги мне, пожалуйста.

EDIT:

Я постараюсь исправить мой вопрос.

HTML страницы:

<head> 
<script src="/file.js"/> 
<script> 
func_from_file(); 
start(){ 
    main_func(){ 
     alert("some alert"); 
    } 
} 
</script> 
</head> 
<body> 
<button onclick="start()"/> 
</body> 

И file.js:

func_from_file(){ 
    alert("some alert from file"); 
} 
main_func(); 

сейчас это правда код. Я забыл половину этого.

+0

какова точная структура папок? где находится этот файл 'file.js', расположенный по отношению к' file.html'? – Grey

+0

Я не понимаю, почему вы не можете добавить 'main_func()' в file.js, хотя, кажется, довольно неэффективно это сделать – Grey

+0

Круговые зависимости - это проблема, да. Прекратите создавать круговые зависимости. – deceze

ответ

-1

Вы можете поставить вызов main_func() в file.js внутри window.onload = функция() {}

Таким образом, он будет звонить, как только вся страница загружается

или положить main_func () вызовите файл.js внутри функции setTimeout javascript и установите тайм-аут в соответствии с вашим удобством.

1

Я думаю, ваша проблема не в том, что функции не правы, но вы объявляя ваш сценарий теги неправильно, попробуйте следующее:

HTML:

<script src="folder/structure/here/file.js"></script> 
<script> 
func_from_file(); 
main_func(){ 
    alert("some alert"); 
} 
</script> 

JS:

func_from_file(){ 
    alert("some alert from file"); 
} 

$(document).ready(function() { 
    main_func(); 
}); 

EDIT: Это то, что я получил сейчас, я думаю, это то, что вы хотите?

HTML:

<html> 
    <head> 
    <script src="file.js"></script> 
    <script> 
    func_from_file(); 
     function main_func(){ 
      alert("some alert"); 
     } 
    </script> 
    </head> 
    <body> 
    <button onclick="main_func()"/> 
    </body> 
</html> 

JS:

function func_from_file(){ 
    alert("some alert from file"); 
} 
main_func(); 

или если вы хотите, чтобы загрузить страницу перед показом main_func()

function func_from_file(){ 
    alert("some alert from file"); 
} 

$(document).ready(function() { 
    main_func(); 
}); 
+0

Я забыл сказать, что я вызываю main_func() не в pageload (или готов), но при нажатии кнопки onclick. –

+0

@elpax, тогда забудьте о '$ (document) .ready' также, уверены ли вы, что ваш' file.js' связан правильно? – Grey

+0

Я уверен. Мне нужно вызвать функцию на странице HTML из JS-файла, но только после того, как HTML-вызов pag в js-файл. –

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